<?php /** * Copyright © 2023 ExacTI Technology Solutions. All rights reserved. * GPLv3 General License. * https://exacti.com.br * Phacil PHP Framework - https://github.com/exacti/phacil-framework */ namespace Phacil\Framework\MagiQL\Syntax; use Phacil\Framework\MagiQL\Api\Syntax\OrderBy as OrderByInterface; /** * Class OrderBy. */ class OrderBy implements OrderByInterface { /** * @var Column */ protected $column; /** * @var string */ protected $direction; /** * @var bool */ protected $useAlias; /** * @param Column $column * @param string $direction */ public function __construct(Column $column, $direction) { $this->setColumn($column); $this->setDirection($direction); } /** * @return Column */ public function getColumn() { return $this->column; } /** * @param Column $column * * @return $this */ public function setColumn($column) { $this->column = $column; return $this; } /** * @return string */ public function getDirection() { return $this->direction; } /** * @param string $direction * * @throws \Phacil\Framework\Exception\InvalidArgumentException * * @return $this */ public function setDirection($direction) { if (!in_array($direction, array(OrderByInterface::ASC, OrderByInterface::DESC))) { throw new \Phacil\Framework\Exception\InvalidArgumentException( "Specified direction '$direction' is not allowed. Only ASC or DESC are allowed." ); } $this->direction = $direction; return $this; } }