public function diSession()
{
$adapterMapping = array('files' => 'Phalcon\\Session\\Adapter\\Files', 'database' => 'Phalcon\\Session\\Adapter\\Database', 'memcache' => 'Phalcon\\Session\\Adapter\\Memcache', 'libmemcached' => 'Eva\\EvaEngine\\Session\\Adapter\\Libmemcached', 'mongo' => 'Phalcon\\Session\\Adapter\\Mongo', 'redis' => 'Phalcon\\Session\\Adapter\\Redis', 'handlersocket' => 'Phalcon\\Session\\Adapter\\HandlerSocket');
$config = $this->getDI()->getConfig();
$adapterKey = $config->session->adapter;
$adapterKey = false === strpos($adapterKey, '\\') ? strtolower($adapterKey) : $adapterKey;
$sessionClass = empty($adapterMapping[$adapterKey]) ? $adapterKey : $adapterMapping[$adapterKey];
if (false === class_exists($sessionClass)) {
throw new Exception\RuntimeException(sprintf('No session adapter found by %s', $sessionClass));
}
if (!empty($config->session->session_name)) {
session_name($config->session->session_name);
}
if (!empty($config->session->cookie_params)) {
$cookie_params = $config->session->cookie_params;
session_set_cookie_params(@$cookie_params->lifetime, @$cookie_params->path, @$cookie_params->domain, @$cookie_params->secure, @$cookie_params->httponly);
}
$session = new $sessionClass(array_merge(array('uniqueId' => $this->getAppName()), $config->session->options->toArray()));
if (!$session->isStarted()) {
//NOTICE: Get php warning here, not found reason
@$session->start();
}
return $session;
}