annotate core/lib/Drupal/Core/Routing/CurrentRouteMatch.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\Core\Routing;
Chris@0 4
Chris@0 5 use Symfony\Component\HttpFoundation\Request;
Chris@0 6 use Symfony\Component\HttpFoundation\RequestStack;
Chris@0 7
Chris@0 8 /**
Chris@0 9 * Default object for current_route_match service.
Chris@0 10 */
Chris@0 11 class CurrentRouteMatch implements ResettableStackedRouteMatchInterface {
Chris@0 12
Chris@0 13 /**
Chris@0 14 * The related request stack.
Chris@0 15 *
Chris@0 16 * @var \Symfony\Component\HttpFoundation\RequestStack
Chris@0 17 */
Chris@0 18 protected $requestStack;
Chris@0 19
Chris@0 20 /**
Chris@0 21 * Internal cache of RouteMatch objects.
Chris@0 22 *
Chris@0 23 * @var \SplObjectStorage
Chris@0 24 */
Chris@0 25 protected $routeMatches;
Chris@0 26
Chris@0 27 /**
Chris@0 28 * Constructs a CurrentRouteMatch object.
Chris@0 29 *
Chris@0 30 * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
Chris@0 31 * The request stack.
Chris@0 32 */
Chris@0 33 public function __construct(RequestStack $request_stack) {
Chris@0 34 $this->requestStack = $request_stack;
Chris@0 35 $this->routeMatches = new \SplObjectStorage();
Chris@0 36 }
Chris@0 37
Chris@0 38 /**
Chris@0 39 * {@inheritdoc}
Chris@0 40 */
Chris@0 41 public function getRouteName() {
Chris@0 42 return $this->getCurrentRouteMatch()->getRouteName();
Chris@0 43 }
Chris@0 44
Chris@0 45 /**
Chris@0 46 * {@inheritdoc}
Chris@0 47 */
Chris@0 48 public function getRouteObject() {
Chris@0 49 return $this->getCurrentRouteMatch()->getRouteObject();
Chris@0 50 }
Chris@0 51
Chris@0 52 /**
Chris@0 53 * {@inheritdoc}
Chris@0 54 */
Chris@0 55 public function getParameter($parameter_name) {
Chris@0 56 return $this->getCurrentRouteMatch()->getParameter($parameter_name);
Chris@0 57 }
Chris@0 58
Chris@0 59 /**
Chris@0 60 * {@inheritdoc}
Chris@0 61 */
Chris@0 62 public function getParameters() {
Chris@0 63 return $this->getCurrentRouteMatch()->getParameters();
Chris@0 64 }
Chris@0 65
Chris@0 66 /**
Chris@0 67 * {@inheritdoc}
Chris@0 68 */
Chris@0 69 public function getRawParameter($parameter_name) {
Chris@0 70 return $this->getCurrentRouteMatch()->getRawParameter($parameter_name);
Chris@0 71 }
Chris@0 72
Chris@0 73 /**
Chris@0 74 * {@inheritdoc}
Chris@0 75 */
Chris@0 76 public function getRawParameters() {
Chris@0 77 return $this->getCurrentRouteMatch()->getRawParameters();
Chris@0 78 }
Chris@0 79
Chris@0 80 /**
Chris@0 81 * Returns the route match for the current request.
Chris@0 82 *
Chris@0 83 * @return \Drupal\Core\Routing\RouteMatchInterface
Chris@0 84 * The current route match object.
Chris@0 85 */
Chris@0 86 public function getCurrentRouteMatch() {
Chris@0 87 return $this->getRouteMatch($this->requestStack->getCurrentRequest());
Chris@0 88 }
Chris@0 89
Chris@0 90 /**
Chris@0 91 * Returns the route match for a passed in request.
Chris@0 92 *
Chris@0 93 * @param \Symfony\Component\HttpFoundation\Request $request
Chris@0 94 * A request object.
Chris@0 95 *
Chris@0 96 * @return \Drupal\Core\Routing\RouteMatchInterface
Chris@0 97 * A route match object created from the request.
Chris@0 98 */
Chris@0 99 protected function getRouteMatch(Request $request) {
Chris@0 100 if (isset($this->routeMatches[$request])) {
Chris@0 101 $route_match = $this->routeMatches[$request];
Chris@0 102 }
Chris@0 103 else {
Chris@0 104 $route_match = RouteMatch::createFromRequest($request);
Chris@0 105
Chris@0 106 // Since getRouteMatch() might be invoked both before and after routing
Chris@0 107 // is completed, only statically cache the route match after there's a
Chris@0 108 // matched route.
Chris@0 109 if ($route_match->getRouteObject()) {
Chris@0 110 $this->routeMatches[$request] = $route_match;
Chris@0 111 }
Chris@0 112 }
Chris@0 113 return $route_match;
Chris@0 114 }
Chris@0 115
Chris@0 116 /**
Chris@0 117 * {@inheritdoc}
Chris@0 118 */
Chris@0 119 public function resetRouteMatch() {
Chris@0 120 $this->routeMatches = new \SplObjectStorage();
Chris@0 121 }
Chris@0 122
Chris@0 123 /**
Chris@0 124 * {@inheritdoc}
Chris@0 125 */
Chris@0 126 public function getMasterRouteMatch() {
Chris@0 127 return $this->getRouteMatch($this->requestStack->getMasterRequest());
Chris@0 128 }
Chris@0 129
Chris@0 130 /**
Chris@0 131 * {@inheritdoc}
Chris@0 132 */
Chris@0 133 public function getParentRouteMatch() {
Chris@0 134 return $this->getRouteMatch($this->requestStack->getParentRequest());
Chris@0 135 }
Chris@0 136
Chris@0 137 /**
Chris@0 138 * {@inheritdoc}
Chris@0 139 */
Chris@0 140 public function getRouteMatchFromRequest(Request $request) {
Chris@0 141 return $this->getRouteMatch($request);
Chris@0 142 }
Chris@0 143
Chris@0 144 }