class CurrentPathStack

Same name in other branches
  1. 9 core/lib/Drupal/Core/Path/CurrentPathStack.php \Drupal\Core\Path\CurrentPathStack
  2. 8.9.x core/lib/Drupal/Core/Path/CurrentPathStack.php \Drupal\Core\Path\CurrentPathStack
  3. 11.x core/lib/Drupal/Core/Path/CurrentPathStack.php \Drupal\Core\Path\CurrentPathStack

Represents the current path for the current request.

Note: You should not rely on paths but rather on route names / parameters or other indicators like context. For some fundamental parts, like routing or path processing, there is unfortunately no way around dealing with paths.

Hierarchy

Expanded class hierarchy of CurrentPathStack

18 files declare their use of CurrentPathStack
ActiveLinkResponseFilter.php in core/lib/Drupal/Core/EventSubscriber/ActiveLinkResponseFilter.php
ActiveLinkResponseFilterTest.php in core/tests/Drupal/Tests/Core/EventSubscriber/ActiveLinkResponseFilterTest.php
PathAliasSubscriber.php in core/modules/path_alias/src/EventSubscriber/PathAliasSubscriber.php
PathBasedBreadcrumbBuilder.php in core/modules/system/src/PathBasedBreadcrumbBuilder.php
ProxyServicesPassTest.php in core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/ProxyServicesPassTest.php

... See full list

1 string reference to 'CurrentPathStack'
core.services.yml in core/core.services.yml
core/core.services.yml
1 service uses CurrentPathStack
path.current in core/core.services.yml
Drupal\Core\Path\CurrentPathStack

File

core/lib/Drupal/Core/Path/CurrentPathStack.php, line 15

Namespace

Drupal\Core\Path
View source
class CurrentPathStack {
    
    /**
     * Static cache of paths.
     *
     * @var \SplObjectStorage
     */
    protected $paths;
    
    /**
     * The request stack.
     *
     * @var \Symfony\Component\HttpFoundation\RequestStack
     */
    protected $requestStack;
    
    /**
     * Constructs a new CurrentPathStack instance.
     *
     * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
     *   The request stack.
     */
    public function __construct(RequestStack $request_stack) {
        $this->requestStack = $request_stack;
        $this->paths = new \SplObjectStorage();
    }
    
    /**
     * Returns the path of the current request.
     *
     * @param \Symfony\Component\HttpFoundation\Request $request
     *   (optional) The request.
     *
     * @return string
     *   Returns the path, without leading slashes.
     */
    public function getPath(?Request $request = NULL) {
        if (!isset($request)) {
            $request = $this->requestStack
                ->getCurrentRequest();
        }
        if (!isset($this->paths[$request])) {
            $this->paths[$request] = $request->getPathInfo();
        }
        return $this->paths[$request];
    }
    
    /**
     * Sets the current path.
     *
     * @param string $path
     *   The path.
     * @param \Symfony\Component\HttpFoundation\Request $request
     *   (optional) The request.
     *
     * @return $this
     */
    public function setPath($path, ?Request $request = NULL) {
        if (!isset($request)) {
            $request = $this->requestStack
                ->getCurrentRequest();
        }
        $this->paths[$request] = $path;
        return $this;
    }

}

Members

Title Sort descending Modifiers Object type Summary
CurrentPathStack::$paths protected property Static cache of paths.
CurrentPathStack::$requestStack protected property The request stack.
CurrentPathStack::getPath public function Returns the path of the current request.
CurrentPathStack::setPath public function Sets the current path.
CurrentPathStack::__construct public function Constructs a new CurrentPathStack instance.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.