comparison vendor/symfony/http-foundation/RequestStack.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 129ea1e6d783
comparison
equal deleted inserted replaced
-1:000000000000 0:4c8ae668cc8c
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;
13
14 /**
15 * Request stack that controls the lifecycle of requests.
16 *
17 * @author Benjamin Eberlei <kontakt@beberlei.de>
18 */
19 class RequestStack
20 {
21 /**
22 * @var Request[]
23 */
24 private $requests = array();
25
26 /**
27 * Pushes a Request on the stack.
28 *
29 * This method should generally not be called directly as the stack
30 * management should be taken care of by the application itself.
31 */
32 public function push(Request $request)
33 {
34 $this->requests[] = $request;
35 }
36
37 /**
38 * Pops the current request from the stack.
39 *
40 * This operation lets the current request go out of scope.
41 *
42 * This method should generally not be called directly as the stack
43 * management should be taken care of by the application itself.
44 *
45 * @return Request|null
46 */
47 public function pop()
48 {
49 if (!$this->requests) {
50 return;
51 }
52
53 return array_pop($this->requests);
54 }
55
56 /**
57 * @return Request|null
58 */
59 public function getCurrentRequest()
60 {
61 return end($this->requests) ?: null;
62 }
63
64 /**
65 * Gets the master Request.
66 *
67 * Be warned that making your code aware of the master request
68 * might make it un-compatible with other features of your framework
69 * like ESI support.
70 *
71 * @return Request|null
72 */
73 public function getMasterRequest()
74 {
75 if (!$this->requests) {
76 return;
77 }
78
79 return $this->requests[0];
80 }
81
82 /**
83 * Returns the parent request of the current.
84 *
85 * Be warned that making your code aware of the parent request
86 * might make it un-compatible with other features of your framework
87 * like ESI support.
88 *
89 * If current Request is the master request, it returns null.
90 *
91 * @return Request|null
92 */
93 public function getParentRequest()
94 {
95 $pos = count($this->requests) - 2;
96
97 if (!isset($this->requests[$pos])) {
98 return;
99 }
100
101 return $this->requests[$pos];
102 }
103 }