Extends
lithium\util\Collection
Collects a set of filters to iterate. Creates a filter chain for the given class/method,
executes it, and returns the value.
Parameters
- mixed $class The class for which this filter chain is being created. If this is the result of a static method call, `$class` should be a string. Otherwise, it should be the instance of the object making the call.
- array $params An associative array of the given method's parameters.
- array $options The configuration options with which to create the filter chain. Mainly, these options allow the `Filters` object to be queried for details such as which class / method initiated it. Available keys: -'class': The name of the class that initiated the filter chain. -'method': The name of the method that initiated the filter chain. -`'data'` _array_: An array of callable objects (usually closures) to be iterated through. By default, execution will be nested such that the first item will be executed first, and will be the last to return.
Returns
Returns the value returned by the first closure in `$options['data`]`.Source
public static function run($class, $params, array $options = array()) {
$defaults = array('class' => null, 'method' => null, 'data' => array());
$options += $defaults;
$lazyFilterCheck = (is_string($class) && $options['method']);
if (($lazyFilterCheck) && isset(static::$_lazyFilters[$class][$options['method']])) {
$filters = static::$_lazyFilters[$class][$options['method']];
unset(static::$_lazyFilters[$class][$options['method']]);
$options['data'] = array_merge($filters, $options['data']);
foreach ($filters as $filter) {
$class::applyFilter($options['method'], $filter);
}
}
$chain = new Filters($options);
$next = $chain->rewind();
return $next($class, $params, $chain);
}