Source of file Predicate.php
Size: 12,173 Bytes - Last Modified: 2014-03-12T23:21:18+01:00
/home/theseer/Downloads/ZendFramework-2.3.0/library/Zend/Db/Sql/Predicate/Predicate.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410 | <?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Zend\Db\Sql\Predicate; use Zend\Db\Sql\Exception\RuntimeException; /** * @property Predicate $and * @property Predicate $or * @property Predicate $AND * @property Predicate $OR * @property Predicate $NEST * @property Predicate $UNNEST */ class Predicate extends PredicateSet { protected $unnest = null; protected $nextPredicateCombineOperator = null; /** * Begin nesting predicates * * @return Predicate */ public function nest() { $predicateSet = new Predicate(); $predicateSet->setUnnest($this); $this->addPredicate($predicateSet, ($this->nextPredicateCombineOperator) ?: $this->defaultCombination); $this->nextPredicateCombineOperator = null; return $predicateSet; } /** * Indicate what predicate will be unnested * * @param Predicate $predicate * @return void */ public function setUnnest(Predicate $predicate) { $this->unnest = $predicate; } /** * Indicate end of nested predicate * * @return Predicate * @throws RuntimeException */ public function unnest() { if ($this->unnest == null) { throw new RuntimeException('Not nested'); } $unnset = $this->unnest; $this->unnest = null; return $unnset; } /** * Create "Equal To" predicate * * Utilizes Operator predicate * * @param int|float|bool|string $left * @param int|float|bool|string $right * @param string $leftType TYPE_IDENTIFIER or TYPE_VALUE by default TYPE_IDENTIFIER {@see allowedTypes} * @param string $rightType TYPE_IDENTIFIER or TYPE_VALUE by default TYPE_VALUE {@see allowedTypes} * @return Predicate */ public function equalTo($left, $right, $leftType = self::TYPE_IDENTIFIER, $rightType = self::TYPE_VALUE) { $this->addPredicate( new Operator($left, Operator::OPERATOR_EQUAL_TO, $right, $leftType, $rightType), ($this->nextPredicateCombineOperator) ?: $this->defaultCombination ); $this->nextPredicateCombineOperator = null; return $this; } /** * Create "Not Equal To" predicate * * Utilizes Operator predicate * * @param int|float|bool|string $left * @param int|float|bool|string $right * @param string $leftType TYPE_IDENTIFIER or TYPE_VALUE by default TYPE_IDENTIFIER {@see allowedTypes} * @param string $rightType TYPE_IDENTIFIER or TYPE_VALUE by default TYPE_VALUE {@see allowedTypes} * @return Predicate */ public function notEqualTo($left, $right, $leftType = self::TYPE_IDENTIFIER, $rightType = self::TYPE_VALUE) { $this->addPredicate( new Operator($left, Operator::OPERATOR_NOT_EQUAL_TO, $right, $leftType, $rightType), ($this->nextPredicateCombineOperator) ?: $this->defaultCombination ); $this->nextPredicateCombineOperator = null; return $this; } /** * Create "Less Than" predicate * * Utilizes Operator predicate * * @param int|float|bool|string $left * @param int|float|bool|string $right * @param string $leftType TYPE_IDENTIFIER or TYPE_VALUE by default TYPE_IDENTIFIER {@see allowedTypes} * @param string $rightType TYPE_IDENTIFIER or TYPE_VALUE by default TYPE_VALUE {@see allowedTypes} * @return Predicate */ public function lessThan($left, $right, $leftType = self::TYPE_IDENTIFIER, $rightType = self::TYPE_VALUE) { $this->addPredicate( new Operator($left, Operator::OPERATOR_LESS_THAN, $right, $leftType, $rightType), ($this->nextPredicateCombineOperator) ?: $this->defaultCombination ); $this->nextPredicateCombineOperator = null; return $this; } /** * Create "Greater Than" predicate * * Utilizes Operator predicate * * @param int|float|bool|string $left * @param int|float|bool|string $right * @param string $leftType TYPE_IDENTIFIER or TYPE_VALUE by default TYPE_IDENTIFIER {@see allowedTypes} * @param string $rightType TYPE_IDENTIFIER or TYPE_VALUE by default TYPE_VALUE {@see allowedTypes} * @return Predicate */ public function greaterThan($left, $right, $leftType = self::TYPE_IDENTIFIER, $rightType = self::TYPE_VALUE) { $this->addPredicate( new Operator($left, Operator::OPERATOR_GREATER_THAN, $right, $leftType, $rightType), ($this->nextPredicateCombineOperator) ?: $this->defaultCombination ); $this->nextPredicateCombineOperator = null; return $this; } /** * Create "Less Than Or Equal To" predicate * * Utilizes Operator predicate * * @param int|float|bool|string $left * @param int|float|bool|string $right * @param string $leftType TYPE_IDENTIFIER or TYPE_VALUE by default TYPE_IDENTIFIER {@see allowedTypes} * @param string $rightType TYPE_IDENTIFIER or TYPE_VALUE by default TYPE_VALUE {@see allowedTypes} * @return Predicate */ public function lessThanOrEqualTo($left, $right, $leftType = self::TYPE_IDENTIFIER, $rightType = self::TYPE_VALUE) { $this->addPredicate( new Operator($left, Operator::OPERATOR_LESS_THAN_OR_EQUAL_TO, $right, $leftType, $rightType), ($this->nextPredicateCombineOperator) ?: $this->defaultCombination ); $this->nextPredicateCombineOperator = null; return $this; } /** * Create "Greater Than Or Equal To" predicate * * Utilizes Operator predicate * * @param int|float|bool|string $left * @param int|float|bool|string $right * @param string $leftType TYPE_IDENTIFIER or TYPE_VALUE by default TYPE_IDENTIFIER {@see allowedTypes} * @param string $rightType TYPE_IDENTIFIER or TYPE_VALUE by default TYPE_VALUE {@see allowedTypes} * @return Predicate */ public function greaterThanOrEqualTo($left, $right, $leftType = self::TYPE_IDENTIFIER, $rightType = self::TYPE_VALUE) { $this->addPredicate( new Operator($left, Operator::OPERATOR_GREATER_THAN_OR_EQUAL_TO, $right, $leftType, $rightType), ($this->nextPredicateCombineOperator) ?: $this->defaultCombination ); $this->nextPredicateCombineOperator = null; return $this; } /** * Create "Like" predicate * * Utilizes Like predicate * * @param string $identifier * @param string $like * @return Predicate */ public function like($identifier, $like) { $this->addPredicate( new Like($identifier, $like), ($this->nextPredicateCombineOperator) ?: $this->defaultCombination ); $this->nextPredicateCombineOperator = null; return $this; } /** * Create "notLike" predicate * * Utilizes In predicate * * @param string $identifier * @param string $notLike * @return Predicate */ public function notLike($identifier, $notLike) { $this->addPredicate( new NotLike($identifier, $notLike), ($this->nextPredicateCombineOperator) ? : $this->defaultCombination ); $this->nextPredicateCombineOperator = null; return $this; } /** * Create an expression, with parameter placeholders * * @param $expression * @param $parameters * @return $this */ public function expression($expression, $parameters) { $this->addPredicate( new Expression($expression, $parameters), ($this->nextPredicateCombineOperator) ?: $this->defaultCombination ); $this->nextPredicateCombineOperator = null; return $this; } /** * Create "Literal" predicate * * Literal predicate, for parameters, use expression() * * @param string $literal * @return Predicate */ public function literal($literal) { // process deprecated parameters from previous literal($literal, $parameters = null) signature if (func_num_args() >= 2) { $parameters = func_get_arg(1); $predicate = new Expression($literal, $parameters); } // normal workflow for "Literals" here if (!isset($predicate)) { $predicate = new Literal($literal); } $this->addPredicate( $predicate, ($this->nextPredicateCombineOperator) ?: $this->defaultCombination ); $this->nextPredicateCombineOperator = null; return $this; } /** * Create "IS NULL" predicate * * Utilizes IsNull predicate * * @param string $identifier * @return Predicate */ public function isNull($identifier) { $this->addPredicate( new IsNull($identifier), ($this->nextPredicateCombineOperator) ?: $this->defaultCombination ); $this->nextPredicateCombineOperator = null; return $this; } /** * Create "IS NOT NULL" predicate * * Utilizes IsNotNull predicate * * @param string $identifier * @return Predicate */ public function isNotNull($identifier) { $this->addPredicate( new IsNotNull($identifier), ($this->nextPredicateCombineOperator) ?: $this->defaultCombination ); $this->nextPredicateCombineOperator = null; return $this; } /** * Create "IN" predicate * * Utilizes In predicate * * @param string $identifier * @param array|\Zend\Db\Sql\Select $valueSet * @return Predicate */ public function in($identifier, $valueSet = null) { $this->addPredicate( new In($identifier, $valueSet), ($this->nextPredicateCombineOperator) ?: $this->defaultCombination ); $this->nextPredicateCombineOperator = null; return $this; } /** * Create "NOT IN" predicate * * Utilizes NotIn predicate * * @param string $identifier * @param array|\Zend\Db\Sql\Select $valueSet * @return Predicate */ public function notIn($identifier, $valueSet = null) { $this->addPredicate( new NotIn($identifier, $valueSet), ($this->nextPredicateCombineOperator) ?: $this->defaultCombination ); $this->nextPredicateCombineOperator = null; return $this; } /** * Create "between" predicate * * Utilizes Between predicate * * @param string $identifier * @param int|float|string $minValue * @param int|float|string $maxValue * @return Predicate */ public function between($identifier, $minValue, $maxValue) { $this->addPredicate( new Between($identifier, $minValue, $maxValue), ($this->nextPredicateCombineOperator) ?: $this->defaultCombination ); $this->nextPredicateCombineOperator = null; return $this; } /** * Overloading * * Overloads "or", "and", "nest", and "unnest" * * @param string $name * @return Predicate */ public function __get($name) { switch (strtolower($name)) { case 'or': $this->nextPredicateCombineOperator = self::OP_OR; break; case 'and': $this->nextPredicateCombineOperator = self::OP_AND; break; case 'nest': return $this->nest(); case 'unnest': return $this->unnest(); } return $this; } } |