Source of file State.php
Size: 7,094 Bytes - Last Modified: 2018-02-09T16:14:20-05:00
src/State.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427 | <?php declare(strict_types=1); /** * Query * * SQL Query Builder / Database Abstraction Layer * * PHP version 7.1 * * @package Query * @author Timothy J. Warren <tim@timshomepage.net> * @copyright 2012 - 2018 Timothy J. Warren * @license http://www.opensource.org/licenses/mit-license.html MIT License * @link https://git.timshomepage.net/aviat4ion/Query */ namespace Query; /** * Query builder state */ class State { // -------------------------------------------------------------------------- // ! SQL Clause Strings // -------------------------------------------------------------------------- /** * Compiled 'select' clause * @var string */ protected $selectString = ''; /** * Compiled 'from' clause * @var string */ protected $fromString = ''; /** * Compiled arguments for insert / update * @var string */ protected $setString = ''; /** * Order by clause * @var string */ protected $orderString = ''; /** * Group by clause * @var string */ protected $groupString = ''; // -------------------------------------------------------------------------- // ! SQL Clause Arrays // -------------------------------------------------------------------------- /** * Keys for insert/update statement * @var array */ protected $setArrayKeys = []; /** * Key/val pairs for order by clause * @var array */ protected $orderArray = []; /** * Key/val pairs for group by clause * @var array */ protected $groupArray = []; // -------------------------------------------------------------------------- // ! Other Class vars // -------------------------------------------------------------------------- /** * Values to apply to prepared statements * @var array */ protected $values = []; /** * Values to apply to where clauses in prepared statements * @var array */ protected $whereValues = []; /** * Value for limit string * @var integer */ protected $limit; /** * Value for offset in limit string * @var string|false */ protected $offset = FALSE; /** * Query component order mapping * for complex select queries * * Format: * [ * 'type' => 'where', * 'conjunction' => ' AND ', * 'string' => 'k=?' * ] * * @var array */ protected $queryMap = []; /** * Map for having clause * @var array */ protected $havingMap = []; /** * @param string $str * @return State */ public function setSelectString(string $str): self { $this->selectString = $str; return $this; } /** * @return string */ public function getSelectString(): string { return $this->selectString; } /** * @param string $str * @return State */ public function appendSelectString(string $str): self { $this->selectString .= $str; return $this; } /** * @return string */ public function getFromString(): string { return $this->fromString; } /** * @param string $fromString * @return State */ public function setFromString(string $fromString): self { $this->fromString = $fromString; return $this; } /** * @return string */ public function getSetString(): string { return $this->setString; } /** * @param string $setString * @return State */ public function setSetString(string $setString): self { $this->setString = $setString; return $this; } /** * @return string */ public function getOrderString(): string { return $this->orderString; } /** * @param string $orderString * @return State */ public function setOrderString(string $orderString): self { $this->orderString = $orderString; return $this; } /** * @return string */ public function getGroupString(): string { return $this->groupString; } /** * @param string $groupString * @return State */ public function setGroupString(string $groupString): self { $this->groupString = $groupString; return $this; } /** * @return array */ public function getSetArrayKeys(): array { return $this->setArrayKeys; } /** * @param array $setArrayKeys * @return State */ public function appendSetArrayKeys(array $setArrayKeys): self { $this->setArrayKeys = array_merge($this->setArrayKeys, $setArrayKeys); return $this; } /** * @param array $setArrayKeys * @return State */ public function setSetArrayKeys(array $setArrayKeys): self { $this->setArrayKeys = $setArrayKeys; return $this; } /** * @return array */ public function getOrderArray(): array { return $this->orderArray; } /** * @param string $key * @param mixed $orderArray * @return State */ public function setOrderArray(string $key, $orderArray): self { $this->orderArray[$key] = $orderArray; return $this; } /** * @return array */ public function getGroupArray(): array { return $this->groupArray; } /** * @param array $groupArray * @return State */ public function setGroupArray(array $groupArray): self { $this->groupArray = $groupArray; return $this; } /** * @param string $groupArray * @return State */ public function appendGroupArray(string $groupArray): self { $this->groupArray[] = $groupArray; return $this; } /** * @return array */ public function getValues(): array { return $this->values; } /** * @param array $values * @return State */ public function appendValues(array $values): self { $this->values = array_merge($this->values, $values); return $this; } /** * @return array */ public function getWhereValues(): array { return $this->whereValues; } /** * @param mixed $val * @return State */ public function appendWhereValues($val): self { if (\is_array($val)) { foreach($val as $v) { $this->whereValues[] = $v; } return $this; } $this->whereValues[] = $val; return $this; } /** * @return int */ public function getLimit(): ?int { return $this->limit; } /** * @param int $limit * @return State */ public function setLimit(int $limit): self { $this->limit = $limit; return $this; } /** * @return string|false */ public function getOffset() { return $this->offset; } /** * @param string|false $offset * @return State */ public function setOffset($offset): self { $this->offset = $offset; return $this; } /** * @return array */ public function getQueryMap(): array { return $this->queryMap; } /** * Add an additional set of mapping pairs to a internal map * * @param string $conjunction * @param string $string * @param string $type * @return State */ public function appendMap(string $conjunction = '', string $string = '', string $type = ''): self { $this->queryMap[] = [ 'type' => $type, 'conjunction' => $conjunction, 'string' => $string ]; return $this; } /** * @return array */ public function getHavingMap(): array { return $this->havingMap; } /** * @param array $item * @return State */ public function appendHavingMap(array $item): self { $this->havingMap[] = $item; return $this; } } |