Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / symfony / http-foundation / Session / Attribute / AttributeBag.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\HttpFoundation\Session\Attribute;
13
14 /**
15  * This class relates to session attribute storage.
16  */
17 class AttributeBag implements AttributeBagInterface, \IteratorAggregate, \Countable
18 {
19     private $name = 'attributes';
20     private $storageKey;
21
22     protected $attributes = array();
23
24     /**
25      * @param string $storageKey The key used to store attributes in the session
26      */
27     public function __construct($storageKey = '_sf2_attributes')
28     {
29         $this->storageKey = $storageKey;
30     }
31
32     /**
33      * {@inheritdoc}
34      */
35     public function getName()
36     {
37         return $this->name;
38     }
39
40     public function setName($name)
41     {
42         $this->name = $name;
43     }
44
45     /**
46      * {@inheritdoc}
47      */
48     public function initialize(array &$attributes)
49     {
50         $this->attributes = &$attributes;
51     }
52
53     /**
54      * {@inheritdoc}
55      */
56     public function getStorageKey()
57     {
58         return $this->storageKey;
59     }
60
61     /**
62      * {@inheritdoc}
63      */
64     public function has($name)
65     {
66         return array_key_exists($name, $this->attributes);
67     }
68
69     /**
70      * {@inheritdoc}
71      */
72     public function get($name, $default = null)
73     {
74         return array_key_exists($name, $this->attributes) ? $this->attributes[$name] : $default;
75     }
76
77     /**
78      * {@inheritdoc}
79      */
80     public function set($name, $value)
81     {
82         $this->attributes[$name] = $value;
83     }
84
85     /**
86      * {@inheritdoc}
87      */
88     public function all()
89     {
90         return $this->attributes;
91     }
92
93     /**
94      * {@inheritdoc}
95      */
96     public function replace(array $attributes)
97     {
98         $this->attributes = array();
99         foreach ($attributes as $key => $value) {
100             $this->set($key, $value);
101         }
102     }
103
104     /**
105      * {@inheritdoc}
106      */
107     public function remove($name)
108     {
109         $retval = null;
110         if (array_key_exists($name, $this->attributes)) {
111             $retval = $this->attributes[$name];
112             unset($this->attributes[$name]);
113         }
114
115         return $retval;
116     }
117
118     /**
119      * {@inheritdoc}
120      */
121     public function clear()
122     {
123         $return = $this->attributes;
124         $this->attributes = array();
125
126         return $return;
127     }
128
129     /**
130      * Returns an iterator for attributes.
131      *
132      * @return \ArrayIterator An \ArrayIterator instance
133      */
134     public function getIterator()
135     {
136         return new \ArrayIterator($this->attributes);
137     }
138
139     /**
140      * Returns the number of attributes.
141      *
142      * @return int The number of attributes
143      */
144     public function count()
145     {
146         return count($this->attributes);
147     }
148 }