[HttpFoundation] Refactor session handlers.

This commit is contained in:
Drak 2012-03-03 08:44:34 +05:45
parent 23267077ff
commit 0a064d8aa1
6 changed files with 40 additions and 89 deletions

View File

@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
namespace Symfony\Component\HttpFoundation\Session\Storage;
namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
/**
* MemcachedSessionStorage.
@ -21,7 +21,7 @@ namespace Symfony\Component\HttpFoundation\Session\Storage;
*
* @author Drak <drak@zikula.org>
*/
class MemcachedSessionStorage extends AbstractSessionStorage implements \SessionHandlerInterface
class MemcachedSessionHandler implements \SessionHandlerInterface
{
/**
* Memcached driver.
@ -63,8 +63,6 @@ class MemcachedSessionStorage extends AbstractSessionStorage implements \Session
$this->memcached->setOption(\Memcached::OPT_PREFIX_KEY, isset($memcachedOptions['prefix']) ? $memcachedOptions['prefix'] : 'sf2s');
$this->memcachedOptions = $memcachedOptions;
parent::__construct($options);
}
/**

View File

@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
namespace Symfony\Component\HttpFoundation\Session\Storage;
namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
/**
* NativeFileSessionStorage.
@ -18,42 +18,24 @@ namespace Symfony\Component\HttpFoundation\Session\Storage;
*
* @author Drak <drak@zikula.org>
*/
class NativeFileSessionStorage extends AbstractSessionStorage
class NativeFileSessionHandler extends NativeSessionHandler
{
/**
* @var string
*/
private $savePath;
/**
* Constructor.
*
* @param string $savePath Path of directory to save session files.
* @param array $options Session configuration options.
*
* @see AbstractSessionStorage::__construct()
* @param string $savePath Path of directory to save session files. Default null will leave setting as defined by PHP.
*/
public function __construct($savePath = null, array $options = array())
public function __construct($savePath = null)
{
if (null === $savePath) {
$savePath = sys_get_temp_dir();
$savePath = ini_get('session.save_path');
}
if (!is_dir($savePath)) {
if ($savePath && !is_dir($savePath)) {
mkdir($savePath, 0777, true);
}
$this->savePath = $savePath;
parent::__construct($options);
}
/**
* {@inheritdoc}
*/
protected function registerSaveHandlers()
{
ini_set('session.save_handler', 'files');
ini_set('session.save_path', $this->savePath);
ini_set('session.save_path', $savePath);
}
}
}

View File

@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
namespace Symfony\Component\HttpFoundation\Session\Storage;
namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
/**
* NativeMemcacheSessionStorage.
@ -20,13 +20,8 @@ namespace Symfony\Component\HttpFoundation\Session\Storage;
*
* @author Drak <drak@zikula.org>
*/
class NativeMemcacheSessionStorage extends AbstractSessionStorage
class NativeMemcacheSessionHandler extends NativeSessionHandler
{
/**
* @var string
*/
private $savePath;
/**
* Constructor.
*
@ -41,17 +36,14 @@ class NativeMemcacheSessionStorage extends AbstractSessionStorage
throw new \RuntimeException('PHP does not have "memcache" session module registered');
}
$this->savePath = $savePath;
parent::__construct($options);
}
if (null === $savePath) {
$savePath = ini_get('session.save_path');
}
/**
* {@inheritdoc}
*/
protected function registerSaveHandlers()
{
ini_set('session.save_handler', 'memcache');
ini_set('session.save_path', $this->savePath);
ini_set('session.save_path', $savePath);
$this->setOptions($options);
}
/**
@ -73,7 +65,5 @@ class NativeMemcacheSessionStorage extends AbstractSessionStorage
ini_set($key, $value);
}
}
parent::setOptions($options);
}
}

View File

@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
namespace Symfony\Component\HttpFoundation\Session\Storage;
namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
/**
* NativeMemcachedSessionStorage.
@ -20,13 +20,8 @@ namespace Symfony\Component\HttpFoundation\Session\Storage;
*
* @author Drak <drak@zikula.org>
*/
class NativeMemcachedSessionStorage extends AbstractSessionStorage
class NativeMemcachedSessionHandler extends NativeSessionHandler
{
/**
* @var string
*/
private $savePath;
/**
* Constructor.
*
@ -41,17 +36,14 @@ class NativeMemcachedSessionStorage extends AbstractSessionStorage
throw new \RuntimeException('PHP does not have "memcached" session module registered');
}
$this->savePath = $savePath;
parent::__construct($options);
}
if (null === $savePath) {
$savePath = ini_get('session.save_path');
}
/**
* {@inheritdoc}
*/
protected function registerSaveHandlers()
{
ini_set('session.save_handler', 'memcached');
ini_set('session.save_path', $this->savePath);
ini_set('session.save_path', $savePath);
$this->setOptions($options);
}
/**
@ -72,7 +64,6 @@ class NativeMemcachedSessionStorage extends AbstractSessionStorage
ini_set($key, $value);
}
}
parent::setOptions($options);
}
}

View File

@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
namespace Symfony\Component\HttpFoundation\Session\Storage;
namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
/**
* NativeSqliteSessionStorage.
@ -18,38 +18,30 @@ namespace Symfony\Component\HttpFoundation\Session\Storage;
*
* @author Drak <drak@zikula.org>
*/
class NativeSqliteSessionStorage extends AbstractSessionStorage
class NativeSqliteSessionHandler extends NativeSessionHandler
{
/**
* @var string
*/
private $dbPath;
/**
* Constructor.
*
* @param string $dbPath Path to SQLite database file.
* @param array $options Session configuration options.
* @param string $savePath Path to SQLite database file itself.
* @param array $options Session configuration options.
*
* @see AbstractSessionStorage::__construct()
*/
public function __construct($dbPath, array $options = array())
public function __construct($savePath, array $options = array())
{
if (!extension_loaded('sqlite')) {
throw new \RuntimeException('PHP does not have "sqlite" session module registered');
}
$this->dbPath = $dbPath;
parent::__construct($options);
}
if (null === $savePath) {
$savePath = ini_get('session.save_path');
}
/**
* {@inheritdoc}
*/
protected function registerSaveHandlers()
{
ini_set('session.save_handler', 'sqlite');
ini_set('session.save_path', $this->dbPath);
ini_set('session.save_path', $savePath);
$this->setOptions($options);
}
/**
@ -66,7 +58,5 @@ class NativeSqliteSessionStorage extends AbstractSessionStorage
ini_set($key, $value);
}
}
parent::setOptions($options);
}
}

View File

@ -9,7 +9,7 @@
* file that was distributed with this source code.
*/
namespace Symfony\Component\HttpFoundation\Session\Storage;
namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
/**
* NullSessionStorage.
@ -20,7 +20,7 @@ namespace Symfony\Component\HttpFoundation\Session\Storage;
*
* @api
*/
class NullSessionStorage extends AbstractSessionStorage implements \SessionHandlerInterface
class NullSessionHandler implements \SessionHandlerInterface
{
/**
* {@inheritdoc}