. * * 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\ORM\Query\Part; /** * A select item. Immutable. * * Immutable. */ class Selection { private function __construct( private Expression $expression, private ?string $alias = null ) {} public function getExpression(): Expression { return $this->expression; } public function getAlias(): ?string { return $this->alias; } public static function create(Expression $expression, ?string $alias = null): self { return new self($expression, $alias); } public static function fromString(string $expression): self { return self::create( Expression::create($expression) ); } public function withAlias(?string $alias): self { $obj = clone $this; $obj->alias = $alias; return $obj; } }