public function read($key = null, array $options = array())
{
if (!$this->isStarted() && !$this->_start()) {
throw new RuntimeException('Could not start session.');
}
return function ($self, $params) {
$key = $params['key'];
if (!$key) {
return $_SESSION;
}
if (strpos($key, '.') === false) {
return isset($_SESSION[$key]) ? $_SESSION[$key] : null;
}
$filter = function ($keys, $data) use(&$filter) {
$key = array_shift($keys);
if (isset($data[$key])) {
return empty($keys) ? $data[$key] : $filter($keys, $data[$key]);
}
};
return $filter(explode('.', $key), $_SESSION);
};
}