123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- <?php
- namespace Symfony\Component\HttpFoundation;
- use Symfony\Component\HttpFoundation\Exception\SessionNotFoundException;
- use Symfony\Component\HttpFoundation\Session\SessionInterface;
- class RequestStack
- {
-
- private array $requests = [];
-
- public function push(Request $request)
- {
- $this->requests[] = $request;
- }
-
- public function pop(): ?Request
- {
- if (!$this->requests) {
- return null;
- }
- return array_pop($this->requests);
- }
- public function getCurrentRequest(): ?Request
- {
- return end($this->requests) ?: null;
- }
-
- public function getMainRequest(): ?Request
- {
- if (!$this->requests) {
- return null;
- }
- return $this->requests[0];
- }
-
- public function getParentRequest(): ?Request
- {
- $pos = \count($this->requests) - 2;
- return $this->requests[$pos] ?? null;
- }
-
- public function getSession(): SessionInterface
- {
- if ((null !== $request = end($this->requests) ?: null) && $request->hasSession()) {
- return $request->getSession();
- }
- throw new SessionNotFoundException();
- }
- }
|