$params */ public static function fromArray(array $params): self { $object = new self(); $object->expression = $params['expression'] ?? null; $object->fieldList = $params['fieldList'] ?? []; $object->columnList = $params['columnList'] ?? []; foreach ($params as $key => $value) { if (!property_exists($object, $key)) { throw new InvalidArgumentException("Unknown parameter '{$key}'."); } } if (!$object->expression || !is_string($object->expression)) { throw new InvalidArgumentException("Bad expression."); } 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; } }