Skip to content

Commit

Permalink
[HttpFoundation] Simplify session storage class names now we have a s…
Browse files Browse the repository at this point in the history
…eparate namespace for sessions.
  • Loading branch information
Drak committed Feb 11, 2012
1 parent 27530cb commit 5b7ef11
Show file tree
Hide file tree
Showing 35 changed files with 131 additions and 127 deletions.
28 changes: 16 additions & 12 deletions CHANGELOG-2.1.md
Expand Up @@ -230,7 +230,7 @@ To get the diff between two versions, go to https://github.com/symfony/symfony/c
* added ResponseHeaderBag::makeDisposition() (implements RFC 6266)
* made mimetype to extension conversion configurable
* [BC BREAK] Moved all session related classes and interfaces into own namespace, as
`Symfony\Component\HttpFoudation\Session`.
`Symfony\Component\HttpFoudation\Session` and renamed classes accordingly.
* Flashes are now stored as a bucket of messages per `$type` so there can be multiple messages per type.
There are four interface constants for type, `FlashBagInterface::INFO`, `FlashBagInterface::NOTICE`,
`FlashBagInterface::WARNING` and `FlashBagInterface::ERROR`.
Expand All @@ -242,19 +242,23 @@ To get the diff between two versions, go to https://github.com/symfony/symfony/c
`getFlash()`, `hasFlash()`, andd `removeFlash()`. `getFlashes() returns a `FlashBagInterface`.
* `Session->clear()` now only clears session attributes as before it cleared flash messages and
attributes. `Session->getFlashes()->popAll()` clears flashes now.
* Added `AbstractSessionStorage` base class for session storage drivers.
* Added `SessionSaveHandler` interface which storage drivers should implement after inheriting from
`AbstractSessionStorage` when writing custom session save handlers.
* [BC BREAK] `SessionStorageInterface` methods removed: `write()`, `read()` and `remove()`. Added
`getAttributes()`, `getFlashes()`.
* Moved attribute storage to `AttributeBagInterface`.
* Added `AttributeBag` to replicate attributes storage behaviour from 2.0.x (default).
* Added `NamespacedAttributeBag` for namespace session attributes.
* Session now implements `SessionInterface` making implementation customizable and portable.
* [BC BREAK] Removed `NativeSessionStorage` and replaced with `NativeFileSessionStorage`.
* Added `Symfony\Component\HttpFoundation\Session\Storage\AbstractStorage` base class for
session storage drivers.
* Added `Symfony\Component\HttpFoundation\Session\Storage\SaveHandlerInterface` interface
which storage drivers should implement after inheriting from
`Symfony\Component\HttpFoundation\Session\Storage\AbstractStorage` when writing custom session save handlers.
* [BC BREAK] `StorageInterface` methods removed: `write()`, `read()` and `remove()`. Added
`getBag()`, `registerBag()`.
* Moved attribute storage to `Symfony\Component\HttpFoundation\Attribute\AttributeBagInterface`.
* Added `Symfony\Component\HttpFoundation\Attribute\AttributeBag` to replicate attributes storage
behaviour from 2.0.x (default).
* Added `Symfony\Component\HttpFoundation\Attribute\NamespacedAttributeBag` for namespace session attributes.
* Session now implements `Symfony\Component\HttpFoundation\Session\SessionInterface` making
implementation customizable and portable.
* [BC BREAK] Removed `NativeStorage` and replaced with `NativeFileStorage`.
* Added session storage drivers for PHP native Memcache, Memcached and SQLite session save handlers.
* Added session storage drivers for custom Memcache, Memcached and Null session save handlers.
* Removed `FilesystemSessionStorage`, use `MockFileSessionStorage` for functional testing instead.
* Removed `FilesystemStorage`, use `MockFileStorage` for functional testing instead.

### HttpKernel

Expand Down
4 changes: 2 additions & 2 deletions UPGRADE-2.1.md
Expand Up @@ -313,9 +313,9 @@ UPGRADE FROM 2.0 to 2.1
* Session storage drivers

Session storage drivers should inherit from
`Symfony\Component\HttpFoundation\Session\Storage\AbstractSessionStorage`
`Symfony\Component\HttpFoundation\Session\Storage\AbstractStorage`
and no longer should implement `read()`, `write()`, `remove()` which were removed from the
`SessionStorageInterface`.
`StorageInterface`.

Any session storage driver that wants to use custom save handlers should
implement `Symfony\Component\HttpFoundation\Session\Storage\SessionSaveHandlerInterface`
Expand Down
Expand Up @@ -3,7 +3,7 @@
namespace Symfony\Bridge\Doctrine\HttpFoundation;

use Doctrine\DBAL\Platforms\MySqlPlatform;
use Symfony\Component\HttpFoundation\Session\Storage\AbstractSessionStorage;
use Symfony\Component\HttpFoundation\Session\Storage\AbstractStorage;
use Symfony\Component\HttpFoundation\Session\Storage\SessionSaveHandlerInterface;
use Doctrine\DBAL\Driver\Connection;

Expand All @@ -13,7 +13,7 @@
* @author Fabien Potencier <fabien@symfony.com>
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
*/
class DbalSessionStorage extends AbstractSessionStorage implements SessionSaveHandlerInterface
class DbalStorage extends AbstractStorage implements SessionSaveHandlerInterface
{
/**
* @var Connection
Expand Down
Expand Up @@ -9,7 +9,7 @@
*
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
*/
final class DbalSessionStorageSchema extends Schema
final class DbalStorageSchema extends Schema
{
private $tableName;

Expand Down
Expand Up @@ -301,7 +301,7 @@ private function registerSessionConfiguration(array $config, ContainerBuilder $c

$this->addClassesToCompile(array(
'Symfony\\Bundle\\FrameworkBundle\\EventListener\\SessionListener',
'Symfony\\Component\\HttpFoundation\\Session\Storage\\SessionStorageInterface',
'Symfony\\Component\\HttpFoundation\\Session\Storage\\StorageInterface',
$container->getDefinition('session')->getClass(),
));

Expand Down
16 changes: 8 additions & 8 deletions src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml
Expand Up @@ -8,14 +8,14 @@
<parameter key="session.class">Symfony\Component\HttpFoundation\Session\Session</parameter>
<parameter key="session.flashbag.class">Symfony\Component\HttpFoundation\Session\Flash\FlashBag</parameter>
<parameter key="session.attribute_bag.class">Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag</parameter>
<parameter key="session.storage.native_file.class">Symfony\Component\HttpFoundation\Session\Storage\NativeFileSessionStorage</parameter>
<parameter key="session.storage.null.class">Symfony\Component\HttpFoundation\Session\Storage\NullSessionStorage</parameter>
<parameter key="session.storage.native_memcache.class">Symfony\Component\HttpFoundation\Session\Storage\NativeMemcacheSessionStorage</parameter>
<parameter key="session.storage.native_memcached.class">Symfony\Component\HttpFoundation\Session\Storage\NativeMemcachedSessionStorage</parameter>
<parameter key="session.storage.native_sqlite.class">Symfony\Component\HttpFoundation\Session\Storage\NativeSqliteSessionStorage</parameter>
<parameter key="session.storage.memcache.class">Symfony\Component\HttpFoundation\Session\Storage\MemcacheSessionStorage</parameter>
<parameter key="session.storage.memcached.class">Symfony\Component\HttpFoundation\Session\Storage\MemcachedSessionStorage</parameter>
<parameter key="session.storage.mock_file.class">Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage</parameter>
<parameter key="session.storage.native_file.class">Symfony\Component\HttpFoundation\Session\Storage\NativeFileStorage</parameter>
<parameter key="session.storage.null.class">Symfony\Component\HttpFoundation\Session\Storage\NullStorage</parameter>
<parameter key="session.storage.native_memcache.class">Symfony\Component\HttpFoundation\Session\Storage\NativeMemcacheStorage</parameter>
<parameter key="session.storage.native_memcached.class">Symfony\Component\HttpFoundation\Session\Storage\NativeMemcachedStorage</parameter>
<parameter key="session.storage.native_sqlite.class">Symfony\Component\HttpFoundation\Session\Storage\NativeSqliteStorage</parameter>
<parameter key="session.storage.memcache.class">Symfony\Component\HttpFoundation\Session\Storage\MemcacheStorage</parameter>
<parameter key="session.storage.memcached.class">Symfony\Component\HttpFoundation\Session\Storage\MemcachedStorage</parameter>
<parameter key="session.storage.mock_file.class">Symfony\Component\HttpFoundation\Session\Storage\MockFileStorage</parameter>
<parameter key="session.memcache.class">Memcache</parameter>
<parameter key="session.memcached.class">Memcached</parameter>

Expand Down
Expand Up @@ -13,7 +13,7 @@

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
use Symfony\Component\HttpFoundation\Session\Storage\MockArrayStorage;
use Symfony\Bundle\FrameworkBundle\Templating\Helper\SessionHelper;
use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
Expand All @@ -26,7 +26,7 @@ public function setUp()
{
$this->request = new Request();

$session = new Session(new MockArraySessionStorage());
$session = new Session(new MockArrayStorage());
$session->set('foobar', 'bar');
$session->getFlashes()->set(FlashBag::NOTICE, 'bar');

Expand Down
Expand Up @@ -15,7 +15,7 @@
use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
use Symfony\Component\HttpFoundation\Session\Storage\MockArrayStorage;
use Symfony\Component\Templating\TemplateNameParser;
use Symfony\Bundle\FrameworkBundle\Templating\GlobalVariables;
use Symfony\Bundle\FrameworkBundle\Tests\TestCase;
Expand Down Expand Up @@ -64,7 +64,7 @@ protected function getContainer()
{
$container = new Container();
$request = new Request();
$session = new Session(new MockArraySessionStorage());
$session = new Session(new MockArrayStorage());

$request->setSession($session);
$container->set('request', $request);
Expand Down
4 changes: 2 additions & 2 deletions src/Symfony/Bundle/TwigBundle/Tests/TwigEngineTest.php
Expand Up @@ -15,7 +15,7 @@
use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
use Symfony\Component\HttpFoundation\Session\Storage\MockArrayStorage;
use Symfony\Component\Templating\TemplateNameParser;
use Symfony\Bundle\FrameworkBundle\Templating\GlobalVariables;

Expand Down Expand Up @@ -71,7 +71,7 @@ protected function getContainer()
{
$container = new Container();
$request = new Request();
$session = new Session(new MockArraySessionStorage());
$session = new Session(new MockArrayStorage());

$request->setSession($session);
$container->set('request', $request);
Expand Down
4 changes: 2 additions & 2 deletions src/Symfony/Component/DependencyInjection/Container.php
Expand Up @@ -43,8 +43,8 @@
*
* <ul>
* <li>request -> getRequestService()</li>
* <li>mysql_session_storage -> getMysqlSessionStorageService()</li>
* <li>symfony.mysql_session_storage -> getSymfony_MysqlSessionStorageService()</li>
* <li>mysql_session_storage -> getMysqlStorageService()</li>
* <li>symfony.mysql_session_storage -> getSymfony_MysqlStorageService()</li>
* </ul>
*
* The container can have three possible behaviors when a service does not exist:
Expand Down
16 changes: 8 additions & 8 deletions src/Symfony/Component/HttpFoundation/Session/Session.php
Expand Up @@ -11,7 +11,7 @@

namespace Symfony\Component\HttpFoundation\Session;

use Symfony\Component\HttpFoundation\Session\Storage\SessionStorageInterface;
use Symfony\Component\HttpFoundation\Session\Storage\StorageInterface;
use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface;
use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
Expand All @@ -31,18 +31,18 @@ class Session implements SessionInterface
/**
* Storage driver.
*
* @var SessionStorageInterface
* @var StorageInterface
*/
protected $storage;

/**
* Constructor.
*
* @param SessionStorageInterface $storage A SessionStorageInterface instance.
* @param StorageInterface $storage A StorageInterface instance.
* @param AttributeBagInterface $attributes An AttributeBagInterface instance, (defaults null for default AttributeBag)
* @param FlashBagInterface $flashes A FlashBagInterface instance (defaults null for default FlashBag)
*/
public function __construct(SessionStorageInterface $storage, AttributeBagInterface $attributes = null, FlashBagInterface $flashes = null)
public function __construct(StorageInterface $storage, AttributeBagInterface $attributes = null, FlashBagInterface $flashes = null)
{
$this->storage = $storage;
$this->registerBag($attributes ?: new AttributeBag());
Expand Down Expand Up @@ -204,7 +204,7 @@ public function getId()
/**
* Implements the \Serialize interface.
*
* @return SessionStorageInterface
* @return StorageInterface
*/
public function serialize()
{
Expand All @@ -214,13 +214,13 @@ public function serialize()
/**
* Implements the \Serialize interface.
*
* @throws \InvalidArgumentException If the passed string does not unserialize to an instance of SessionStorageInterface
* @throws \InvalidArgumentException If the passed string does not unserialize to an instance of StorageInterface
*/
public function unserialize($serialized)
{
$storage = unserialize($serialized);
if (!$storage instanceof SessionStorageInterface) {
throw new \InvalidArgumentException('Serialized data did not return a valid instance of SessionStorageInterface');
if (!$storage instanceof StorageInterface) {
throw new \InvalidArgumentException('Serialized data did not return a valid instance of StorageInterface');
}

$this->storage = $storage;
Expand Down
Expand Up @@ -22,7 +22,7 @@
*
* @author Drak <drak@zikula.org>
*/
abstract class AbstractSessionStorage implements SessionStorageInterface
abstract class AbstractStorage implements StorageInterface
{
/**
* Array of SessionBagInterface
Expand Down Expand Up @@ -297,7 +297,7 @@ protected function registerSaveHandlers()
{
// note this can be reset to PHP's control using ini_set('session.save_handler', 'files');
// so long as ini_set() is called before the session is started.
if ($this instanceof SessionSaveHandlerInterface) {
if ($this instanceof SaveHandlerInterface) {
session_set_save_handler(
array($this, 'openSession'),
array($this, 'closeSession'),
Expand Down
Expand Up @@ -12,11 +12,11 @@
namespace Symfony\Component\HttpFoundation\Session\Storage;

/**
* MemcacheSessionStorage.
* MemcacheStorage.
*
* @author Drak <drak@zikula.org>
*/
class MemcacheSessionStorage extends AbstractSessionStorage implements SessionSaveHandlerInterface
class MemcacheStorage extends AbstractStorage implements SaveHandlerInterface
{
/**
* Memcache driver.
Expand Down Expand Up @@ -46,7 +46,7 @@ class MemcacheSessionStorage extends AbstractSessionStorage implements SessionSa
* @param array $memcacheOptions An associative array of Memcachge options
* @param array $options Session configuration options.
*
* @see AbstractSessionStorage::__construct()
* @see AbstractStorage::__construct()
*/
public function __construct(\Memcache $memcache, array $memcacheOptions = array(), array $options = array())
{
Expand Down
Expand Up @@ -12,11 +12,11 @@
namespace Symfony\Component\HttpFoundation\Session\Storage;

/**
* MemcachedSessionStorage.
* MemcachedStorage.
*
* @author Drak <drak@zikula.org>
*/
class MemcachedSessionStorage extends AbstractSessionStorage implements SessionSaveHandlerInterface
class MemcachedStorage extends AbstractStorage implements SaveHandlerInterface
{
/**
* Memcached driver.
Expand All @@ -39,7 +39,7 @@ class MemcachedSessionStorage extends AbstractSessionStorage implements SessionS
* @param array $memcachedOptions An associative array of Memcached options
* @param array $options Session configuration options.
*
* @see AbstractSessionStorage::__construct()
* @see AbstractStorage::__construct()
*/
public function __construct(\Memcached $memcache, array $memcachedOptions = array(), array $options = array())
{
Expand Down
Expand Up @@ -12,18 +12,18 @@
namespace Symfony\Component\HttpFoundation\Session\Storage;

/**
* MockArraySessionStorage mocks the session for unit tests.
* MockArrayStorage mocks the session for unit tests.
*
* No PHP session is actually started since a session can be initialized
* and shutdown only once per PHP execution cycle.
*
* When doing functional testing, you should use MockFileSessionStorage instead.
* When doing functional testing, you should use MockFileStorage instead.
*
* @author Fabien Potencier <fabien@symfony.com>
* @author Bulat Shakirzyanov <mallluhuct@gmail.com>
* @author Drak <drak@zikula.org>
*/
class MockArraySessionStorage extends AbstractSessionStorage
class MockArrayStorage extends AbstractStorage
{
/**
* @var string
Expand Down
Expand Up @@ -12,15 +12,15 @@
namespace Symfony\Component\HttpFoundation\Session\Storage;

/**
* MockFileSessionStorage is used to mock sessions for
* MockFileStorage is used to mock sessions for
* functional testing when done in a single PHP process.
*
* No PHP session is actually started since a session can be initialized
* and shutdown only once per PHP execution cycle.
*
* @author Drak <drak@zikula.org>
*/
class MockFileSessionStorage extends MockArraySessionStorage
class MockFileStorage extends MockArrayStorage
{
/**
* @var string
Expand All @@ -33,7 +33,7 @@ class MockFileSessionStorage extends MockArraySessionStorage
* @param string $savePath Path of directory to save session files.
* @param array $options Session options.
*
* @see AbstractSessionStorage::__construct()
* @see AbstractStorage::__construct()
*/
public function __construct($savePath = null, array $options = array())
{
Expand Down
Expand Up @@ -12,13 +12,13 @@
namespace Symfony\Component\HttpFoundation\Session\Storage;

/**
* NativeFileSessionStorage.
* NativeFileStorage.
*
* Native session handler using PHP's built in file storage.
*
* @author Drak <drak@zikula.org>
*/
class NativeFileSessionStorage extends AbstractSessionStorage
class NativeFileStorage extends AbstractStorage
{
/**
* @var string
Expand All @@ -31,7 +31,7 @@ class NativeFileSessionStorage extends AbstractSessionStorage
* @param string $savePath Path of directory to save session files.
* @param array $options Session configuration options.
*
* @see AbstractSessionStorage::__construct()
* @see AbstractStorage::__construct()
*/
public function __construct($savePath = null, array $options = array())
{
Expand Down
Expand Up @@ -12,13 +12,13 @@
namespace Symfony\Component\HttpFoundation\Session\Storage;

/**
* NativeMemcacheSessionStorage.
* NativeMemcacheStorage.
*
* Session based on native PHP memcache database handler.
*
* @author Drak <drak@zikula.org>
*/
class NativeMemcacheSessionStorage extends AbstractSessionStorage
class NativeMemcacheStorage extends AbstractStorage
{
/**
* @var string
Expand All @@ -31,7 +31,7 @@ class NativeMemcacheSessionStorage extends AbstractSessionStorage
* @param string $savePath Path of memcache server.
* @param array $options Session configuration options.
*
* @see AbstractSessionStorage::__construct()
* @see AbstractStorage::__construct()
*/
public function __construct($savePath = 'tcp://127.0.0.1:11211?persistent=0', array $options = array())
{
Expand Down

0 comments on commit 5b7ef11

Please sign in to comment.