Projekt

Obecné

Profil

Stáhnout (2.3 KB) Statistiky
| Větev: | Revize:
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
}
(20-20/26)