[HttpFoundation] Remove hard coded assumptions and replace with API calls.

This commit is contained in:
Drak 2012-03-15 09:51:39 +05:45
parent 9a5fc659d7
commit eb9bf05637

View File

@ -36,6 +36,16 @@ class Session implements SessionInterface
*/ */
protected $storage; protected $storage;
/**
* @var string
*/
private $flashName;
/**
* @var string
*/
private $attributeName;
/** /**
* Constructor. * Constructor.
* *
@ -46,8 +56,14 @@ class Session implements SessionInterface
public function __construct(SessionStorageInterface $storage = null, AttributeBagInterface $attributes = null, FlashBagInterface $flashes = null) public function __construct(SessionStorageInterface $storage = null, AttributeBagInterface $attributes = null, FlashBagInterface $flashes = null)
{ {
$this->storage = $storage ?: new NativeSessionStorage(); $this->storage = $storage ?: new NativeSessionStorage();
$this->registerBag($attributes ?: new AttributeBag());
$this->registerBag($flashes ?: new FlashBag()); $attributeBag = $attributes ?: new AttributeBag();
$this->attributeName = $attributeBag->getName();
$this->registerBag($attributeBag);
$flashBag = $flashes ?: new FlashBag();
$this->flashName = $flashBag->getName();
$this->registerBag($flashBag);
} }
/** /**
@ -63,7 +79,7 @@ class Session implements SessionInterface
*/ */
public function has($name) public function has($name)
{ {
return $this->storage->getBag('attributes')->has($name); return $this->storage->getBag($this->attributeName)->has($name);
} }
/** /**
@ -71,7 +87,7 @@ class Session implements SessionInterface
*/ */
public function get($name, $default = null) public function get($name, $default = null)
{ {
return $this->storage->getBag('attributes')->get($name, $default); return $this->storage->getBag($this->attributeName)->get($name, $default);
} }
/** /**
@ -79,7 +95,7 @@ class Session implements SessionInterface
*/ */
public function set($name, $value) public function set($name, $value)
{ {
$this->storage->getBag('attributes')->set($name, $value); $this->storage->getBag($this->attributeName)->set($name, $value);
} }
/** /**
@ -87,7 +103,7 @@ class Session implements SessionInterface
*/ */
public function all() public function all()
{ {
return $this->storage->getBag('attributes')->all(); return $this->storage->getBag($this->attributeName)->all();
} }
/** /**
@ -95,7 +111,7 @@ class Session implements SessionInterface
*/ */
public function replace(array $attributes) public function replace(array $attributes)
{ {
$this->storage->getBag('attributes')->replace($attributes); $this->storage->getBag($this->attributeName)->replace($attributes);
} }
/** /**
@ -103,7 +119,7 @@ class Session implements SessionInterface
*/ */
public function remove($name) public function remove($name)
{ {
return $this->storage->getBag('attributes')->remove($name); return $this->storage->getBag($this->attributeName)->remove($name);
} }
/** /**
@ -111,7 +127,7 @@ class Session implements SessionInterface
*/ */
public function clear() public function clear()
{ {
$this->storage->getBag('attributes')->clear(); $this->storage->getBag($this->attributeName)->clear();
} }
/** /**
@ -201,7 +217,7 @@ class Session implements SessionInterface
*/ */
public function getFlashBag() public function getFlashBag()
{ {
return $this->getBag('flashes'); return $this->getBag($this->flashName);
} }
// the following methods are kept for compatibility with Symfony 2.0 (they will be removed for Symfony 2.3) // the following methods are kept for compatibility with Symfony 2.0 (they will be removed for Symfony 2.3)