RequestStack

class RequestStack

Request stack that controls the lifecycle of requests.

Methods

public push(Request $request) Pushes a Request on the stack.
public Request|null pop() Pops the current request from the stack.
public Request|null getCurrentRequest() No description
public Request|null getMasterRequest() Gets the master Request.
public Request|null getParentRequest() Returns the parent request of the current.

Details

at line 32

push()

public push(Request $request)

Pushes a Request on the stack.

This method should generally not be called directly as the stack management should be taken care of by the application itself.

Parameters

Request $request
at line 47

pop()

public Request|null pop()

Pops the current request from the stack.

This operation lets the current request go out of scope.

This method should generally not be called directly as the stack management should be taken care of by the application itself.

Return Value

Request|null
at line 59

getCurrentRequest()

public Request|null getCurrentRequest()

Return Value

Request|null
at line 73

getMasterRequest()

public Request|null getMasterRequest()

Gets the master Request.

Be warned that making your code aware of the master request might make it un-compatible with other features of your framework like ESI support.

Return Value

Request|null
at line 93

getParentRequest()

public Request|null getParentRequest()

Returns the parent request of the current.

Be warned that making your code aware of the parent request might make it un-compatible with other features of your framework like ESI support.

If current Request is the master request, it returns null.

Return Value

Request|null

Source code

<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace App\Khan\Component\HttpFoundation;

/**
 * Request stack that controls the lifecycle of requests.
 *
 * @author Benjamin Eberlei <kontakt@beberlei.de>
 */
class RequestStack
{
    /**
     * @var Request[]
     */
    private $requests = array();

    /**
     * Pushes a Request on the stack.
     *
     * This method should generally not be called directly as the stack
     * management should be taken care of by the application itself.
     */
    public function push(Request $request)
    {
        $this->requests[] = $request;
    }

    /**
     * Pops the current request from the stack.
     *
     * This operation lets the current request go out of scope.
     *
     * This method should generally not be called directly as the stack
     * management should be taken care of by the application itself.
     *
     * @return Request|null
     */
    public function pop()
    {
        if (!$this->requests) {
            return;
        }

        return array_pop($this->requests);
    }

    /**
     * @return Request|null
     */
    public function getCurrentRequest()
    {
        return end($this->requests) ?: null;
    }

    /**
     * Gets the master Request.
     *
     * Be warned that making your code aware of the master request
     * might make it un-compatible with other features of your framework
     * like ESI support.
     *
     * @return Request|null
     */
    public function getMasterRequest()
    {
        if (!$this->requests) {
            return;
        }

        return $this->requests[0];
    }

    /**
     * Returns the parent request of the current.
     *
     * Be warned that making your code aware of the parent request
     * might make it un-compatible with other features of your framework
     * like ESI support.
     *
     * If current Request is the master request, it returns null.
     *
     * @return Request|null
     */
    public function getParentRequest()
    {
        $pos = count($this->requests) - 2;

        if (!isset($this->requests[$pos])) {
            return;
        }

        return $this->requests[$pos];
    }
}