default services conflit ?
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony CMF package.
|
||||
*
|
||||
* (c) Symfony CMF
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Cmf\Component\Routing\Enhancer;
|
||||
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
/**
|
||||
* Functionality to collect and apply route enhancers to a request.
|
||||
*
|
||||
* @author Tim Plunkett
|
||||
* @author Larry Garfield
|
||||
* @author David Buchmann
|
||||
*/
|
||||
trait RouteEnhancerTrait
|
||||
{
|
||||
/**
|
||||
* @var RouteEnhancerInterface[][]
|
||||
*/
|
||||
private $enhancers = [];
|
||||
|
||||
/**
|
||||
* Cached sorted list of enhancers.
|
||||
*
|
||||
* @var RouteEnhancerInterface[]
|
||||
*/
|
||||
private $sortedEnhancers = [];
|
||||
|
||||
/**
|
||||
* Apply the route enhancers to the defaults, according to priorities.
|
||||
*
|
||||
* @param array $defaults
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function applyRouteEnhancers($defaults, Request $request)
|
||||
{
|
||||
foreach ($this->getRouteEnhancers() as $enhancer) {
|
||||
$defaults = $enhancer->enhance($defaults, $request);
|
||||
}
|
||||
|
||||
return $defaults;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add route enhancers to the router to let them generate information on
|
||||
* matched routes.
|
||||
*
|
||||
* The order of the enhancers is determined by the priority, the higher the
|
||||
* value, the earlier the enhancer is run.
|
||||
*
|
||||
* @param int $priority
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function addRouteEnhancer(RouteEnhancerInterface $enhancer, $priority = 0)
|
||||
{
|
||||
if (empty($this->enhancers[$priority])) {
|
||||
$this->enhancers[$priority] = [];
|
||||
}
|
||||
|
||||
$this->enhancers[$priority][] = $enhancer;
|
||||
$this->sortedEnhancers = [];
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sorts the enhancers and flattens them.
|
||||
*
|
||||
* @return RouteEnhancerInterface[] the enhancers ordered by priority
|
||||
*/
|
||||
public function getRouteEnhancers()
|
||||
{
|
||||
if (0 === count($this->sortedEnhancers)) {
|
||||
$this->sortedEnhancers = $this->sortRouteEnhancers();
|
||||
}
|
||||
|
||||
return $this->sortedEnhancers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort enhancers by priority.
|
||||
*
|
||||
* The highest priority number is the highest priority (reverse sorting).
|
||||
*
|
||||
* @return RouteEnhancerInterface[] the sorted enhancers
|
||||
*/
|
||||
private function sortRouteEnhancers()
|
||||
{
|
||||
if (0 === count($this->enhancers)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
krsort($this->enhancers);
|
||||
|
||||
return call_user_func_array('array_merge', $this->enhancers);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user