protected static function _checkFormats($rules)
{
return function ($self, $params, $chain) use($rules) {
$value = $params['value'];
$format = $params['format'];
$options = $params['options'];
$defaults = array('all' => true);
$options += $defaults;
$formats = (array) $format;
$options['all'] = $format === 'any';
foreach ($rules as $index => $check) {
if (!$options['all'] && !(in_array($index, $formats) || isset($formats[$index]))) {
continue;
}
$regexPassed = is_string($check) && preg_match($check, $value);
$closurePassed = is_object($check) && $check($value, $format, $options);
if ($regexPassed || $closurePassed) {
return true;
}
}
return false;
};
}