public static function read($key = null, array $options = array())
{
$defaults = array('name' => null, 'strategies' => true);
$options += $defaults;
$method = ($name = $options['name']) ? static::adapter($name)->read($key, $options) : null;
$settings = static::_config($name);
if (!$method) {
foreach (array_keys(static::$_configurations) as $name) {
if ($method = static::adapter($name)->read($key, $options)) {
break;
}
}
if (!$method || !$name) {
return null;
}
}
$filters = $settings['filters'] ?: array();
$result = static::_filter(__FUNCTION__, compact('key', 'options'), $method, $filters);
if ($options['strategies']) {
$options += array('key' => $key, 'mode' => 'LIFO', 'class' => __CLASS__);
return static::applyStrategies(__FUNCTION__, $name, $result, $options);
}
return $result;
}