Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
9 / 9 |
CRAP | |
100.00% |
31 / 31 |
RouteMatch | |
100.00% |
1 / 1 |
|
100.00% |
9 / 9 |
15 | |
100.00% |
31 / 31 |
__construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
8 / 8 |
|||
createFromRequest | |
100.00% |
1 / 1 |
3 | |
100.00% |
9 / 9 |
|||
getRouteName | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
getRouteObject | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
getParameter | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
getParameters | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
getRawParameter | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
getRawParameters | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
getParameterNames | |
100.00% |
1 / 1 |
5 | |
100.00% |
8 / 8 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\Routing\RouteMatch. | |
*/ | |
namespace Drupal\Core\Routing; | |
use Symfony\Cmf\Component\Routing\RouteObjectInterface; | |
use Symfony\Component\HttpFoundation\ParameterBag; | |
use Symfony\Component\HttpFoundation\Request; | |
use Symfony\Component\Routing\Route; | |
/** | |
* Default object representing the results of routing. | |
*/ | |
class RouteMatch implements RouteMatchInterface { | |
/** | |
* The route name. | |
* | |
* @var string | |
*/ | |
protected $routeName; | |
/** | |
* The route. | |
* | |
* @var \Symfony\Component\Routing\Route | |
*/ | |
protected $route; | |
/** | |
* A key|value store of parameters. | |
* | |
* @var \Symfony\Component\HttpFoundation\ParameterBag | |
*/ | |
protected $parameters; | |
/** | |
* A key|value store of raw parameters. | |
* | |
* @var \Symfony\Component\HttpFoundation\ParameterBag | |
*/ | |
protected $rawParameters; | |
/** | |
* Constructs a RouteMatch object. | |
* | |
* @param string $route_name | |
* The name of the route. | |
* @param \Symfony\Component\Routing\Route $route | |
* The route. | |
* @param array $parameters | |
* The parameters array. | |
* @param array $raw_parameters | |
* The raw $parameters array. | |
*/ | |
public function __construct($route_name, Route $route, array $parameters = array(), array $raw_parameters = array()) { | |
$this->routeName = $route_name; | |
$this->route = $route; | |
// Pre-filter parameters. | |
$route_params = $this->getParameterNames(); | |
$parameters = array_intersect_key($parameters, $route_params); | |
$raw_parameters = array_intersect_key($raw_parameters, $route_params); | |
$this->parameters = new ParameterBag($parameters); | |
$this->rawParameters = new ParameterBag($raw_parameters); | |
} | |
/** | |
* Creates a RouteMatch from a request. | |
* | |
* @param Request $request | |
* A request object. | |
* | |
* @return \Drupal\Core\Routing\RouteMatchInterface | |
* A new RouteMatch object if there's a matched route for the request. | |
* A new NullRouteMatch object otherwise (e.g., on a 404 page or when | |
* invoked prior to routing). | |
*/ | |
public static function createFromRequest(Request $request) { | |
if ($request->attributes->get(RouteObjectInterface::ROUTE_OBJECT)) { | |
$raw_variables = array(); | |
if ($raw = $request->attributes->get('_raw_variables')) { | |
$raw_variables = $raw->all(); | |
} | |
return new static( | |
$request->attributes->get(RouteObjectInterface::ROUTE_NAME), | |
$request->attributes->get(RouteObjectInterface::ROUTE_OBJECT), | |
$request->attributes->all(), | |
$raw_variables); | |
} | |
else { | |
return new NullRouteMatch(); | |
} | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getRouteName() { | |
return $this->routeName; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getRouteObject() { | |
return $this->route; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getParameter($parameter_name) { | |
return $this->parameters->get($parameter_name); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getParameters() { | |
return $this->parameters; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getRawParameter($parameter_name) { | |
return $this->rawParameters->get($parameter_name); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getRawParameters() { | |
return $this->rawParameters; | |
} | |
/** | |
* Returns the names of all parameters for the currently matched route. | |
* | |
* @return array | |
* Route parameter names as both the keys and values. | |
*/ | |
protected function getParameterNames() { | |
$names = array(); | |
if ($route = $this->getRouteObject()) { | |
// Variables defined in path and host patterns are route parameters. | |
$variables = $route->compile()->getVariables(); | |
$names = array_combine($variables, $variables); | |
// Route defaults that do not start with a leading "_" are also | |
// parameters, even if they are not included in path or host patterns. | |
foreach ($route->getDefaults() as $name => $value) { | |
if (!isset($names[$name]) && substr($name, 0, 1) !== '_') { | |
$names[$name] = $name; | |
} | |
} | |
} | |
return $names; | |
} | |
} |