You are here

class CurrentPathStack in Drupal 10

Same name and namespace in other branches
  1. 8 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

20 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