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