Commit 14dcce89 authored by Shakarim Sapa's avatar Shakarim Sapa

- Добавлена проверка на уникальность идентификатора

parent 9f22bddf
...@@ -28,10 +28,12 @@ class Conditions { ...@@ -28,10 +28,12 @@ class Conditions {
} }
/** /**
* Метод проверяет конфиг на наличие ошибок. Так же дополнительно производится проверка на обязательную константу ID
* @return bool * @return bool
* @throws \yii\web\ServerErrorHttpException * @throws \yii\web\ServerErrorHttpException
*/ */
public static function createConditions(){ public static function createConditions(){
$uniqueId=array();
// Перебираем все условия что указаны в конфиге // Перебираем все условия что указаны в конфиге
foreach(self::$config as $condition) { foreach(self::$config as $condition) {
// Если путь к классу указан, и файл по этому пути существует // Если путь к классу указан, и файл по этому пути существует
...@@ -40,7 +42,14 @@ class Conditions { ...@@ -40,7 +42,14 @@ class Conditions {
$class = $condition['class']::init(); $class = $condition['class']::init();
// Проверяем наличие обязательных констант // Проверяем наличие обязательных констант
// Проверили существование идентификатора // Проверили существование идентификатора
if ($class::defined('CONDITION_ID')===false) if ($class::defined('CONDITION_ID')===true) {
// Если с идентификатором все в порядке, проверяем его на уникальность.
// В системе не должно быть два или более классов с условиями имеющие одинаковые идентификаторы
if (!in_array($class::CONDITION_ID, $uniqueId))
$uniqueId[] = $class::CONDITION_ID;
else
throw new ServerErrorHttpException('Condition ID have to be unique', 500);
} else
throw new ServerErrorHttpException('Condition ID in class "'.get_class($class).'" has not found', 500); throw new ServerErrorHttpException('Condition ID in class "'.get_class($class).'" has not found', 500);
} else { } else {
throw new ServerErrorHttpException('Condition class file or path not found. Please check configuration file', 500); throw new ServerErrorHttpException('Condition class file or path not found. Please check configuration file', 500);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment