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; } public function getFieldList(): array { return $this->fieldList; } public function getColumnList(): array { return $this->columnList; } }