Open Journal Systems  3.3.0
vendor/symfony/http-foundation/Session/Session.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 
13 
20 
21 // Help opcache.preload discover always-needed symbols
22 class_exists(AttributeBag::class);
23 class_exists(FlashBag::class);
24 class_exists(SessionBagProxy::class);
25 
30 class Session implements SessionInterface, \IteratorAggregate, \Countable
31 {
32  protected $storage;
33 
34  private $flashName;
35  private $attributeName;
36  private $data = [];
37  private $usageIndex = 0;
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 
55  public function start()
56  {
57  return $this->storage->start();
58  }
59 
63  public function has($name)
64  {
65  return $this->getAttributeBag()->has($name);
66  }
67 
71  public function get($name, $default = null)
72  {
73  return $this->getAttributeBag()->get($name, $default);
74  }
75 
79  public function set($name, $value)
80  {
81  $this->getAttributeBag()->set($name, $value);
82  }
83 
87  public function all()
88  {
89  return $this->getAttributeBag()->all();
90  }
91 
95  public function replace(array $attributes)
96  {
97  $this->getAttributeBag()->replace($attributes);
98  }
99 
103  public function remove($name)
104  {
105  return $this->getAttributeBag()->remove($name);
106  }
107 
111  public function clear()
112  {
113  $this->getAttributeBag()->clear();
114  }
115 
119  public function isStarted()
120  {
121  return $this->storage->isStarted();
122  }
123 
129  public function getIterator()
130  {
131  return new \ArrayIterator($this->getAttributeBag()->all());
132  }
133 
139  public function count()
140  {
141  return \count($this->getAttributeBag()->all());
142  }
143 
144  public function &getUsageIndex(): int
145  {
146  return $this->usageIndex;
147  }
148 
152  public function isEmpty(): bool
153  {
154  if ($this->isStarted()) {
155  ++$this->usageIndex;
156  }
157  foreach ($this->data as &$data) {
158  if (!empty($data)) {
159  return false;
160  }
161  }
162 
163  return true;
164  }
165 
169  public function invalidate($lifetime = null)
170  {
171  $this->storage->clear();
172 
173  return $this->migrate(true, $lifetime);
174  }
175 
179  public function migrate($destroy = false, $lifetime = null)
180  {
181  return $this->storage->regenerate($destroy, $lifetime);
182  }
183 
187  public function save()
188  {
189  $this->storage->save();
190  }
191 
195  public function getId()
196  {
197  return $this->storage->getId();
198  }
199 
203  public function setId($id)
204  {
205  if ($this->storage->getId() !== $id) {
206  $this->storage->setId($id);
207  }
208  }
209 
213  public function getName()
214  {
215  return $this->storage->getName();
216  }
217 
221  public function setName($name)
222  {
223  $this->storage->setName($name);
224  }
225 
229  public function getMetadataBag()
230  {
231  ++$this->usageIndex;
232 
233  return $this->storage->getMetadataBag();
234  }
235 
239  public function registerBag(SessionBagInterface $bag)
240  {
241  $this->storage->registerBag(new SessionBagProxy($bag, $this->data, $this->usageIndex));
242  }
243 
247  public function getBag($name)
248  {
249  $bag = $this->storage->getBag($name);
250 
251  return method_exists($bag, 'getBag') ? $bag->getBag() : $bag;
252  }
253 
259  public function getFlashBag()
260  {
261  return $this->getBag($this->flashName);
262  }
263 
269  private function getAttributeBag(): AttributeBagInterface
270  {
271  return $this->getBag($this->attributeName);
272  }
273 }
Symfony\Component\HttpFoundation\Session\Session\all
all()
Definition: vendor/symfony/http-foundation/Session/Session.php:87
Symfony\Component\HttpFoundation\Session
Symfony\Component\HttpFoundation\Session\Session\__construct
__construct(SessionStorageInterface $storage=null, AttributeBagInterface $attributes=null, FlashBagInterface $flashes=null)
Definition: vendor/symfony/http-foundation/Session/Session.php:39
Symfony\Component\HttpFoundation\Session\Session\isEmpty
isEmpty()
Definition: vendor/symfony/http-foundation/Session/Session.php:152
Symfony\Component\HttpFoundation\Session\Session\start
start()
Definition: vendor/symfony/http-foundation/Session/Session.php:55
Symfony\Component\HttpFoundation\Session\Session\save
save()
Definition: vendor/symfony/http-foundation/Session/Session.php:187
Symfony\Component\HttpFoundation\Session\Session\invalidate
invalidate($lifetime=null)
Definition: vendor/symfony/http-foundation/Session/Session.php:169
Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface
Definition: lib/vendor/symfony/http-foundation/Session/Flash/FlashBagInterface.php:21
Symfony\Component\HttpFoundation\Session\Session\isStarted
isStarted()
Definition: vendor/symfony/http-foundation/Session/Session.php:119
Symfony\Component\HttpFoundation\Session\Flash\FlashBag
Definition: lib/vendor/symfony/http-foundation/Session/Flash/FlashBag.php:19
Symfony\Component\HttpFoundation\Session\Session\setName
setName($name)
Definition: vendor/symfony/http-foundation/Session/Session.php:221
Symfony\Component\HttpFoundation\Session\Session\migrate
migrate($destroy=false, $lifetime=null)
Definition: lib/vendor/symfony/http-foundation/Session/Session.php:180
Symfony\Component\HttpFoundation\Session\Session\getName
getName()
Definition: vendor/symfony/http-foundation/Session/Session.php:213
Symfony\Component\HttpFoundation\Session\Session\has
has($name)
Definition: vendor/symfony/http-foundation/Session/Session.php:63
Symfony\Component\HttpFoundation\Session\Session\getUsageIndex
& getUsageIndex()
Definition: vendor/symfony/http-foundation/Session/Session.php:144
Symfony\Component\HttpFoundation\Session\Session\getFlashBag
getFlashBag()
Definition: vendor/symfony/http-foundation/Session/Session.php:259
Symfony\Component\HttpFoundation\Session\Session\getId
getId()
Definition: vendor/symfony/http-foundation/Session/Session.php:195
Symfony\Component\HttpFoundation\Session\Storage\SessionStorageInterface
Definition: lib/vendor/symfony/http-foundation/Session/Storage/SessionStorageInterface.php:22
Symfony\Component\HttpFoundation\Session\Session\$storage
$storage
Definition: lib/vendor/symfony/http-foundation/Session/Session.php:37
Session
Maintains user state information from one request to the next.
Definition: Session.inc.php:22
Symfony\Component\HttpFoundation\Session\Session\clear
clear()
Definition: vendor/symfony/http-foundation/Session/Session.php:111
Symfony\Component\HttpFoundation\Session\Session\getBag
getBag($name)
Definition: vendor/symfony/http-foundation/Session/Session.php:247
Symfony\Component\HttpFoundation\Session\Session\getMetadataBag
getMetadataBag()
Definition: vendor/symfony/http-foundation/Session/Session.php:229
Symfony\Component\HttpFoundation\Session\Session\replace
replace(array $attributes)
Definition: vendor/symfony/http-foundation/Session/Session.php:95
Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage
Definition: lib/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php:25
Symfony\Component\HttpFoundation\Session\Session\registerBag
registerBag(SessionBagInterface $bag)
Definition: lib/vendor/symfony/http-foundation/Session/Session.php:236
Symfony\Component\HttpFoundation\Session\SessionBagProxy
Definition: SessionBagProxy.php:19
Symfony\Component\HttpFoundation\Session\Session\getIterator
getIterator()
Definition: vendor/symfony/http-foundation/Session/Session.php:129
Symfony\Component\HttpFoundation\Session\Session\setId
setId($id)
Definition: vendor/symfony/http-foundation/Session/Session.php:203
Symfony\Component\HttpFoundation\Session\SessionBagInterface
Definition: lib/vendor/symfony/http-foundation/Session/SessionBagInterface.php:19
Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag
Definition: lib/vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php:17
Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface
Definition: lib/vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php:21
Symfony\Component\HttpFoundation\Session\Session\count
count()
Definition: vendor/symfony/http-foundation/Session/Session.php:139