. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Core\Select\Order; use Espo\Core\Select\SearchParams; use InvalidArgumentException; /** * Immutable. */ class Item { private string $orderBy; /** @var SearchParams::ORDER_ASC|SearchParams::ORDER_DESC */ private string $order; /** * @param SearchParams::ORDER_ASC|SearchParams::ORDER_DESC $order */ private function __construct(string $orderBy, string $order) { if ( $order !== SearchParams::ORDER_ASC && $order !== SearchParams::ORDER_DESC ) { throw new InvalidArgumentException("Bad order."); } $this->orderBy = $orderBy; $this->order = $order; } /** * @param SearchParams::ORDER_ASC|SearchParams::ORDER_DESC|null $order */ public static function create(string $orderBy, ?string $order = null): self { if ($order === null) { $order = SearchParams::ORDER_ASC; } return new self($orderBy, $order); } /** * Get a field. */ public function getOrderBy(): string { return $this->orderBy; } /** * Get a direction. * * @return SearchParams::ORDER_ASC|SearchParams::ORDER_DESC */ public function getOrder(): string { return $this->order; } }