Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
33.33% |
1 / 3 |
CRAP | |
75.00% |
9 / 12 |
| CurrentPathStack | |
0.00% |
0 / 1 |
|
33.33% |
1 / 3 |
6.56 | |
75.00% |
9 / 12 |
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| getPath | |
0.00% |
0 / 1 |
3.58 | |
60.00% |
3 / 5 |
|||
| setPath | |
0.00% |
0 / 1 |
2.06 | |
75.00% |
3 / 4 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Core\Path\CurrentPathStack. | |
| */ | |
| namespace Drupal\Core\Path; | |
| use Symfony\Component\HttpFoundation\RequestStack; | |
| /** | |
| * 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. | |
| */ | |
| 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 = 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 = NULL) { | |
| if (!isset($request)) { | |
| $request = $this->requestStack->getCurrentRequest(); | |
| } | |
| $this->paths[$request] = $path; | |
| return $this; | |
| } | |
| } |