<?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\Manipulation\QueryException; use Phacil\Framework\MagiQL\Api\Syntax\QueryPartInterface; /** * Class Column. */ class Column implements QueryPartInterface { const ALL = '*'; /** * @var Table */ protected $table; /** * @var string */ protected $name; /** * @var string */ protected $alias; /** * @param string $name * @param string $table * @param string $alias */ public function __construct($name, $table, $alias = '') { $this->setName($name); $this->setTable($table); $this->setAlias($alias); } /** * @return string */ public function partName() { return 'COLUMN'; } /** * @return string */ public function getName() { return $this->name; } /** * @param string $name * * @return $this */ public function setName($name) { $this->name = (string) $name; return $this; } /** * @return Table */ public function getTable() { return $this->table; } /** * @param string $table * * @return $this */ public function setTable($table) { $newTable = array($table); $this->table = SyntaxFactory::createTable($newTable); return $this; } /** * @return string */ public function getAlias() { return $this->alias; } /** * @param null|string $alias * * @return $this * * @throws QueryException */ public function setAlias($alias) { if (!$alias || 0 == \strlen($alias)) { $this->alias = null; return $this; } if ($this->isAll()) { throw new QueryException("Can't use alias because column name is ALL (*)"); } $this->alias = (string) $alias; return $this; } /** * Check whether column name is '*' or not. * * @return bool */ public function isAll() { return $this->getName() == self::ALL; } }