示例#1
0
 /**
  * For Regex
  * 
  * @param Regex $rule
  * @return callable|null
  */
 public static function regex(Regex $rule)
 {
     $filters = array();
     $is_multiple = !$rule->types(Regex::TYPE_NORMAL);
     $is_multiple and $filters[] = Cast::explode($rule);
     if ($rule->types(Regex::TYPE_RANGE)) {
         $filters[] = Cast::fillSide($rule);
         $filters[] = Check::greaterThanOrEqual();
         $rule->info('is_datetime') and $filters[] = Cast::datetime($rule);
     }
     if ($rule->info('is_number')) {
         $filters[] = $is_multiple ? Check::numberMultiple($rule) : Check::number($rule);
     }
     $count = count($filters);
     if (!$count) {
         return null;
     }
     if ($count === 1) {
         return $filters[0];
     }
     return function ($input) use($filters) {
         foreach ($filters as $filter) {
             $input = $filter($input);
             if ($input === null) {
                 return null;
             }
         }
         return $input;
     };
 }
示例#2
0
文件: Sets.php 项目: nnssn/straw
 /**
  * Validate set
  * 
  * @param string[] $values
  * @return array|null
  */
 protected function validateSet($values)
 {
     $explode = Cast::explode($this);
     $set = Check::set($this->candidates);
     return $set($explode($values));
 }