| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 | <?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. * * @implements \IteratorAggregate<string, mixed> */class AttributeBag implements AttributeBagInterface, \IteratorAggregate, \Countable{    private $name = 'attributes';    private $storageKey;    protected $attributes = [];    /**     * @param string $storageKey The key used to store attributes in the session     */    public function __construct(string $storageKey = '_sf2_attributes')    {        $this->storageKey = $storageKey;    }    /**     * {@inheritdoc}     */    public function getName()    {        return $this->name;    }    public function setName(string $name)    {        $this->name = $name;    }    /**     * {@inheritdoc}     */    public function initialize(array &$attributes)    {        $this->attributes = &$attributes;    }    /**     * {@inheritdoc}     */    public function getStorageKey()    {        return $this->storageKey;    }    /**     * {@inheritdoc}     */    public function has(string $name)    {        return \array_key_exists($name, $this->attributes);    }    /**     * {@inheritdoc}     */    public function get(string $name, $default = null)    {        return \array_key_exists($name, $this->attributes) ? $this->attributes[$name] : $default;    }    /**     * {@inheritdoc}     */    public function set(string $name, $value)    {        $this->attributes[$name] = $value;    }    /**     * {@inheritdoc}     */    public function all()    {        return $this->attributes;    }    /**     * {@inheritdoc}     */    public function replace(array $attributes)    {        $this->attributes = [];        foreach ($attributes as $key => $value) {            $this->set($key, $value);        }    }    /**     * {@inheritdoc}     */    public function remove(string $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 = [];        return $return;    }    /**     * Returns an iterator for attributes.     *     * @return \ArrayIterator<string, mixed>     */    #[\ReturnTypeWillChange]    public function getIterator()    {        return new \ArrayIterator($this->attributes);    }    /**     * Returns the number of attributes.     *     * @return int     */    #[\ReturnTypeWillChange]    public function count()    {        return \count($this->attributes);    }}
 |