class 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
- class \Drupal\Core\Path\CurrentPathStack
 
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  
1 string reference to 'CurrentPathStack'
- core.services.yml in core/
core.services.yml  - core/core.services.yml
 
1 service uses CurrentPathStack
File
- 
              core/
lib/ Drupal/ Core/ Path/ CurrentPathStack.php, line 15  
Namespace
Drupal\Core\PathView 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.