expression = $expression; $this->fieldList = $fieldList; $this->columnList = $columnList; } /** * @param array $params */ public static function fromArray(array $params): self { $expression = $params['expression'] ?? null; if (!$expression || !is_string($expression)) { throw new InvalidArgumentException("Bad expression."); } $object = new self( $expression, $params['fieldList'] ?? [], $params['columnList'] ?? [] ); $object->expression = $expression; $object->fieldList = $params['fieldList'] ?? []; $object->columnList = $params['columnList'] ?? []; foreach ($params as $key => $value) { if (!property_exists($object, $key)) { throw new InvalidArgumentException("Unknown parameter '{$key}'."); } } return $object; } public function getExpression(): string { return $this->expression; } /** * @return string[] */ public function getFieldList(): array { return $this->fieldList; } /** * @return string[] */ public function getColumnList(): array { return $this->columnList; } }