Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
4 / 4 |
CRAP | |
100.00% |
15 / 15 |
RouteProcessorManager | |
100.00% |
1 / 1 |
|
100.00% |
4 / 4 |
7 | |
100.00% |
15 / 15 |
addOutbound | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
processOutbound | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
getOutbound | |
100.00% |
1 / 1 |
2 | |
100.00% |
3 / 3 |
|||
sortProcessors | |
100.00% |
1 / 1 |
2 | |
100.00% |
5 / 5 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\RouteProcessor\RouteProcessorManager. | |
*/ | |
namespace Drupal\Core\RouteProcessor; | |
use Drupal\Core\Render\BubbleableMetadata; | |
use Symfony\Component\Routing\Route; | |
/** | |
* Route processor manager. | |
* | |
* Holds an array of route processor objects and uses them to sequentially | |
* process an outbound route, in order of processor priority. | |
*/ | |
class RouteProcessorManager implements OutboundRouteProcessorInterface { | |
/** | |
* Holds the array of outbound processors to cycle through. | |
* | |
* @var array | |
* An array whose keys are priorities and whose values are arrays of path | |
* processor objects. | |
*/ | |
protected $outboundProcessors = array(); | |
/** | |
* Holds the array of outbound processors, sorted by priority. | |
* | |
* @var array | |
* An array of path processor objects. | |
*/ | |
protected $sortedOutbound = array(); | |
/** | |
* Adds an outbound processor object to the $outboundProcessors property. | |
* | |
* @param \Drupal\Core\RouteProcessor\OutboundRouteProcessorInterface $processor | |
* The processor object to add. | |
* @param int $priority | |
* The priority of the processor being added. | |
*/ | |
public function addOutbound(OutboundRouteProcessorInterface $processor, $priority = 0) { | |
$this->outboundProcessors[$priority][] = $processor; | |
$this->sortedOutbound = array(); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function processOutbound($route_name, Route $route, array &$parameters, BubbleableMetadata $bubbleable_metadata = NULL) { | |
$processors = $this->getOutbound(); | |
foreach ($processors as $processor) { | |
$processor->processOutbound($route_name, $route, $parameters, $bubbleable_metadata); | |
} | |
} | |
/** | |
* Returns the sorted array of outbound processors. | |
* | |
* @return array | |
* An array of processor objects. | |
*/ | |
protected function getOutbound() { | |
if (empty($this->sortedOutbound)) { | |
$this->sortedOutbound = $this->sortProcessors(); | |
} | |
return $this->sortedOutbound; | |
} | |
/** | |
* Sorts the processors according to priority. | |
*/ | |
protected function sortProcessors() { | |
$sorted = array(); | |
krsort($this->outboundProcessors); | |
foreach ($this->outboundProcessors as $processors) { | |
$sorted = array_merge($sorted, $processors); | |
} | |
return $sorted; | |
} | |
} |