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; } }; }
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']; } }; }; }