Chris@0: Chris@0: * Chris@0: * For the full copyright and license information, please view the LICENSE Chris@0: * file that was distributed with this source code. Chris@0: */ Chris@0: Chris@0: namespace Symfony\Component\HttpFoundation\Session\Attribute; Chris@0: Chris@0: /** Chris@0: * This class relates to session attribute storage. Chris@0: */ Chris@0: class AttributeBag implements AttributeBagInterface, \IteratorAggregate, \Countable Chris@0: { Chris@0: private $name = 'attributes'; Chris@0: private $storageKey; Chris@0: Chris@17: protected $attributes = []; Chris@0: Chris@0: /** Chris@0: * @param string $storageKey The key used to store attributes in the session Chris@0: */ Chris@0: public function __construct($storageKey = '_sf2_attributes') Chris@0: { Chris@0: $this->storageKey = $storageKey; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getName() Chris@0: { Chris@0: return $this->name; Chris@0: } Chris@0: Chris@0: public function setName($name) Chris@0: { Chris@0: $this->name = $name; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function initialize(array &$attributes) Chris@0: { Chris@0: $this->attributes = &$attributes; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getStorageKey() Chris@0: { Chris@0: return $this->storageKey; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function has($name) Chris@0: { Chris@18: return \array_key_exists($name, $this->attributes); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function get($name, $default = null) Chris@0: { Chris@18: return \array_key_exists($name, $this->attributes) ? $this->attributes[$name] : $default; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function set($name, $value) Chris@0: { Chris@0: $this->attributes[$name] = $value; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function all() Chris@0: { Chris@0: return $this->attributes; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function replace(array $attributes) Chris@0: { Chris@17: $this->attributes = []; Chris@0: foreach ($attributes as $key => $value) { Chris@0: $this->set($key, $value); Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function remove($name) Chris@0: { Chris@0: $retval = null; Chris@18: if (\array_key_exists($name, $this->attributes)) { Chris@0: $retval = $this->attributes[$name]; Chris@0: unset($this->attributes[$name]); Chris@0: } Chris@0: Chris@0: return $retval; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function clear() Chris@0: { Chris@0: $return = $this->attributes; Chris@17: $this->attributes = []; Chris@0: Chris@0: return $return; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Returns an iterator for attributes. Chris@0: * Chris@0: * @return \ArrayIterator An \ArrayIterator instance Chris@0: */ Chris@0: public function getIterator() Chris@0: { Chris@0: return new \ArrayIterator($this->attributes); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Returns the number of attributes. Chris@0: * Chris@0: * @return int The number of attributes Chris@0: */ Chris@0: public function count() Chris@0: { Chris@17: return \count($this->attributes); Chris@0: } Chris@0: }