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