Mercurial > hg > cmmr2012-drupal-site
comparison vendor/symfony/http-foundation/Session/Session.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children | 5311817fb629 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c75dbcec494b |
---|---|
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; | |
13 | |
14 use Symfony\Component\HttpFoundation\Session\Storage\SessionStorageInterface; | |
15 use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag; | |
16 use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface; | |
17 use Symfony\Component\HttpFoundation\Session\Flash\FlashBag; | |
18 use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface; | |
19 use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage; | |
20 | |
21 /** | |
22 * @author Fabien Potencier <fabien@symfony.com> | |
23 * @author Drak <drak@zikula.org> | |
24 */ | |
25 class Session implements SessionInterface, \IteratorAggregate, \Countable | |
26 { | |
27 protected $storage; | |
28 | |
29 private $flashName; | |
30 private $attributeName; | |
31 private $data = array(); | |
32 private $hasBeenStarted; | |
33 | |
34 /** | |
35 * @param SessionStorageInterface $storage A SessionStorageInterface instance | |
36 * @param AttributeBagInterface $attributes An AttributeBagInterface instance, (defaults null for default AttributeBag) | |
37 * @param FlashBagInterface $flashes A FlashBagInterface instance (defaults null for default FlashBag) | |
38 */ | |
39 public function __construct(SessionStorageInterface $storage = null, AttributeBagInterface $attributes = null, FlashBagInterface $flashes = null) | |
40 { | |
41 $this->storage = $storage ?: new NativeSessionStorage(); | |
42 | |
43 $attributes = $attributes ?: new AttributeBag(); | |
44 $this->attributeName = $attributes->getName(); | |
45 $this->registerBag($attributes); | |
46 | |
47 $flashes = $flashes ?: new FlashBag(); | |
48 $this->flashName = $flashes->getName(); | |
49 $this->registerBag($flashes); | |
50 } | |
51 | |
52 /** | |
53 * {@inheritdoc} | |
54 */ | |
55 public function start() | |
56 { | |
57 return $this->storage->start(); | |
58 } | |
59 | |
60 /** | |
61 * {@inheritdoc} | |
62 */ | |
63 public function has($name) | |
64 { | |
65 return $this->getAttributeBag()->has($name); | |
66 } | |
67 | |
68 /** | |
69 * {@inheritdoc} | |
70 */ | |
71 public function get($name, $default = null) | |
72 { | |
73 return $this->getAttributeBag()->get($name, $default); | |
74 } | |
75 | |
76 /** | |
77 * {@inheritdoc} | |
78 */ | |
79 public function set($name, $value) | |
80 { | |
81 $this->getAttributeBag()->set($name, $value); | |
82 } | |
83 | |
84 /** | |
85 * {@inheritdoc} | |
86 */ | |
87 public function all() | |
88 { | |
89 return $this->getAttributeBag()->all(); | |
90 } | |
91 | |
92 /** | |
93 * {@inheritdoc} | |
94 */ | |
95 public function replace(array $attributes) | |
96 { | |
97 $this->getAttributeBag()->replace($attributes); | |
98 } | |
99 | |
100 /** | |
101 * {@inheritdoc} | |
102 */ | |
103 public function remove($name) | |
104 { | |
105 return $this->getAttributeBag()->remove($name); | |
106 } | |
107 | |
108 /** | |
109 * {@inheritdoc} | |
110 */ | |
111 public function clear() | |
112 { | |
113 $this->getAttributeBag()->clear(); | |
114 } | |
115 | |
116 /** | |
117 * {@inheritdoc} | |
118 */ | |
119 public function isStarted() | |
120 { | |
121 return $this->storage->isStarted(); | |
122 } | |
123 | |
124 /** | |
125 * Returns an iterator for attributes. | |
126 * | |
127 * @return \ArrayIterator An \ArrayIterator instance | |
128 */ | |
129 public function getIterator() | |
130 { | |
131 return new \ArrayIterator($this->getAttributeBag()->all()); | |
132 } | |
133 | |
134 /** | |
135 * Returns the number of attributes. | |
136 * | |
137 * @return int The number of attributes | |
138 */ | |
139 public function count() | |
140 { | |
141 return count($this->getAttributeBag()->all()); | |
142 } | |
143 | |
144 /** | |
145 * @return bool | |
146 * | |
147 * @internal | |
148 */ | |
149 public function hasBeenStarted() | |
150 { | |
151 return $this->hasBeenStarted; | |
152 } | |
153 | |
154 /** | |
155 * @return bool | |
156 * | |
157 * @internal | |
158 */ | |
159 public function isEmpty() | |
160 { | |
161 foreach ($this->data as &$data) { | |
162 if (!empty($data)) { | |
163 return false; | |
164 } | |
165 } | |
166 | |
167 return true; | |
168 } | |
169 | |
170 /** | |
171 * {@inheritdoc} | |
172 */ | |
173 public function invalidate($lifetime = null) | |
174 { | |
175 $this->storage->clear(); | |
176 | |
177 return $this->migrate(true, $lifetime); | |
178 } | |
179 | |
180 /** | |
181 * {@inheritdoc} | |
182 */ | |
183 public function migrate($destroy = false, $lifetime = null) | |
184 { | |
185 return $this->storage->regenerate($destroy, $lifetime); | |
186 } | |
187 | |
188 /** | |
189 * {@inheritdoc} | |
190 */ | |
191 public function save() | |
192 { | |
193 $this->storage->save(); | |
194 } | |
195 | |
196 /** | |
197 * {@inheritdoc} | |
198 */ | |
199 public function getId() | |
200 { | |
201 return $this->storage->getId(); | |
202 } | |
203 | |
204 /** | |
205 * {@inheritdoc} | |
206 */ | |
207 public function setId($id) | |
208 { | |
209 $this->storage->setId($id); | |
210 } | |
211 | |
212 /** | |
213 * {@inheritdoc} | |
214 */ | |
215 public function getName() | |
216 { | |
217 return $this->storage->getName(); | |
218 } | |
219 | |
220 /** | |
221 * {@inheritdoc} | |
222 */ | |
223 public function setName($name) | |
224 { | |
225 $this->storage->setName($name); | |
226 } | |
227 | |
228 /** | |
229 * {@inheritdoc} | |
230 */ | |
231 public function getMetadataBag() | |
232 { | |
233 return $this->storage->getMetadataBag(); | |
234 } | |
235 | |
236 /** | |
237 * {@inheritdoc} | |
238 */ | |
239 public function registerBag(SessionBagInterface $bag) | |
240 { | |
241 $this->storage->registerBag(new SessionBagProxy($bag, $this->data, $this->hasBeenStarted)); | |
242 } | |
243 | |
244 /** | |
245 * {@inheritdoc} | |
246 */ | |
247 public function getBag($name) | |
248 { | |
249 return $this->storage->getBag($name)->getBag(); | |
250 } | |
251 | |
252 /** | |
253 * Gets the flashbag interface. | |
254 * | |
255 * @return FlashBagInterface | |
256 */ | |
257 public function getFlashBag() | |
258 { | |
259 return $this->getBag($this->flashName); | |
260 } | |
261 | |
262 /** | |
263 * Gets the attributebag interface. | |
264 * | |
265 * Note that this method was added to help with IDE autocompletion. | |
266 * | |
267 * @return AttributeBagInterface | |
268 */ | |
269 private function getAttributeBag() | |
270 { | |
271 return $this->getBag($this->attributeName); | |
272 } | |
273 } |