コード例 #1
0
ファイル: Filter.php プロジェクト: pepakriz/grido
 /**
  * @param string $value
  * @return Condition
  * @throws \Exception
  * @internal
  */
 public function __getCondition($value)
 {
     if ($value === '' || $value === NULL) {
         return FALSE;
         //skip
     }
     $condition = $this->getCondition();
     if ($this->where !== NULL) {
         $condition = Condition::setupFromCallback($this->where, $value);
     } else {
         if (is_string($condition)) {
             $condition = Condition::setup($this->getColumn(), $condition, $this->formatValue($value));
         } elseif ($condition instanceof Condition) {
             $condition = $condition;
         } elseif (is_callable($condition)) {
             $condition = callback($condition)->invokeArgs(array($value));
         } elseif (is_array($condition)) {
             $condition = isset($condition[$value]) ? $condition[$value] : Condition::setupEmpty();
         }
     }
     if (is_array($condition)) {
         //for user-defined condition by array or callback
         $condition = Condition::setupFromArray($condition);
     } elseif ($condition !== NULL && !$condition instanceof Condition) {
         $type = gettype($condition);
         throw new \InvalidArgumentException("Condition must be array or Condition object. {$type} given.");
     }
     return $condition;
 }