ColumnName = $columnName; $this->Operator = $operator; $this->Value = $value; } /** * Разбирает условие, заданное массивом и возвращает объект Condition. * * @param array $condition Условие, заданное в массиве. * * @return Condition Условие. */ public static function Parse (array $condition): Condition { // Проверка условия if (count($condition) < 3) // - если условие не содержит 3 элемента, то выбрасывается исключение throw new InvalidArgumentException('Неверный формат условия / Unexpected condition format.'); // Разбор условия [$column, $operator, $value] = $condition; // Создание условия return new Condition($column, $operator, $value); } /** * Формирует условие. * * @param int $index Индекс замены параметров для защиты от SQL-инъекций. * * @return Tuple (string, array) Сформированное условие: SQL-запрос и параметры запроса. */ public function Get (int $index = 0): Tuple { // Формирование условия SQL $sql = "`$this->ColumnName` $this->Operator :prop_$index"; // Формирование параметров запроса $params = [":prop_$index" => $this->Value]; // Возвращение результата return new Tuple($sql, $params); } /** * @inheritDoc */ public function ToArray (): array { // Создаю массив $result = []; // Заполняю его $result["type_class"] = Condition::class; $result["ColumnName"] = $this->ColumnName; $result["Operator"] = $this->Operator; $result["Value"] = $this->Value; // Возвращаю массив return $result; } /** * @inheritDoc */ public function FromArray (array $array): void { // Проверка массива // - если массив содержит элемент "ColumnName" if (isset($array["ColumnName"])) // -- то присваиваю его значение $this->ColumnName = $array["ColumnName"]; // - если массив содержит элемент "Operator" if (isset($array["Operator"])) // -- то присваиваю его значение $this->Operator = $array["Operator"]; // - если массив содержит элемент "Value" if (isset($array["Value"])) // -- то присваиваю его значение $this->Value = $array["Value"]; } }