public static function listOfDifferentObjects($selectorField, $livrs, $ruleBuilders)
 {
     $validators = array();
     foreach ($livrs as $selectorValue => $livr) {
         $validator = new \Validator\LIVR($livr);
         $validator->registerRules($ruleBuilders)->prepare();
         $validators[$selectorValue] = $validator;
     }
     return function ($objects, $params, &$outputArr) use($validators, $selectorField) {
         $results = array();
         $errors = array();
         $hasErrors = false;
         foreach ($objects as $object) {
             if (!is_array($object) || !isset($object[$selectorField]) || !$validators[$object[$selectorField]]) {
                 $errors[] = 'FORMAT_ERROR';
                 continue;
             }
             $validator = $validators[$object[$selectorField]];
             $result = $validator->validate($object);
             if ($result) {
                 $results[] = $result;
                 $errors[] = null;
             } else {
                 $results[] = null;
                 $errors[] = $validator->getErrors();
                 $hasErrors = true;
             }
         }
         if ($hasErrors) {
             return $errors;
         } else {
             $outputArr = $results;
             return;
         }
     };
 }
Exemple #2
0
 private function buildAliasedRule($alias)
 {
     if (!$alias['name']) {
         throw new \Exception("Alias name required");
     }
     if (!$alias['rules']) {
         throw new \Exception("Alias rules required");
     }
     return function ($ruleBuilders) use($alias) {
         $validator = new \Validator\LIVR(array('value' => $alias['rules']));
         $validator->registerRules($ruleBuilders)->prepare();
         return function ($value, $params, &$outputArr) use($validator, $alias) {
             $result = $validator->validate(array('value' => $value));
             if ($result) {
                 $outputArr = $result['value'];
                 return;
             } else {
                 $errors = $validator->getErrors();
                 return isset($alias['error']) ? $alias['error'] : $errors['value'];
             }
         };
     };
 }