public static function applyStrategies($method, $name, $data, array $options = array())
{
$options += array('mode' => null);
if (!($strategies = static::strategies($name))) {
return $data;
}
if (!count($strategies)) {
return $data;
}
if (isset($options['mode']) && $options['mode'] === 'LIFO') {
$strategies->setIteratorMode(SplDoublyLinkedList::IT_MODE_LIFO);
unset($options['mode']);
}
foreach ($strategies as $strategy) {
if (method_exists($strategy, $method)) {
$data = $strategy->{$method}($data, $options);
}
}
return $data;
}