forbidComplexExpressions = $params['forbidComplexExpressions'] ?? false; $object->forceDefault = $params['forceDefault'] ?? false; $object->orderBy = $params['orderBy'] ?? null; $object->order = $params['order'] ?? null; foreach ($params as $key => $value) { if (!property_exists($object, $key)) { throw new InvalidArgumentException("Unknown parameter '{$key}'."); } } if ($object->orderBy && !is_string($object->orderBy)) { throw new InvalidArgumentException("Bad orderBy."); } /** @var ?string $order */ $order = $object->order; if ( $order && $order !== SearchParams::ORDER_ASC && $order !== SearchParams::ORDER_DESC ) { throw new InvalidArgumentException("Bad order."); } return $object; } /*public function forbidComplexExpressions(): bool { return $this->forbidComplexExpressions; }*/ /** * Force default order. */ public function forceDefault(): bool { return $this->forceDefault; } /** * An order-By field. */ public function getOrderBy(): ?string { /** @var ?string */ return $this->orderBy; } /** * An order direction. * * @return SearchParams::ORDER_ASC|SearchParams::ORDER_DESC|null */ public function getOrder(): ?string { return $this->order; } }