validateAndInit($query); return $instance; } /** * @throws ValidationException */ private function validateAndInit(array $data): void { $orderBy = $data[self::ORDER_BY] ?? null; if ($orderBy === null) { return; } [$field, $dir] = array_pad(explode('-', $orderBy), 2, null); $this->orderField = $field; $this->orderDirection = $dir ?? self::DEFAULT_ORDER_DIRECTION; } public function orderField(): ?string { return $this->orderField; } public function orderDirection(): string { return $this->orderDirection; } public function hasOrderField(): bool { return $this->orderField !== null; } }