149 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?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 = [];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @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 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()
 | 
						|
    {
 | 
						|
        return \count($this->attributes);
 | 
						|
    }
 | 
						|
}
 |