Same name and namespace in other branches
  1. 8.9.x core/lib/Drupal/Core/Path/CurrentPathStack.php \Drupal\Core\Path\CurrentPathStack
  2. 9 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

15 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

Namesort descending Modifiers Type Description Overrides
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.