trait RouteEnhancerCollectorTrait in Page Manager 8
Same name and namespace in other branches
- 8.4 src/Routing/RouteEnhancerCollectorTrait.php \Drupal\page_manager\Routing\RouteEnhancerCollectorTrait
Provides a trait to make a service a collector of route enhancers.
@todo Move to Symfony CMF in https://github.com/symfony-cmf/Routing/pull/155.
Hierarchy
- trait \Drupal\page_manager\Routing\RouteEnhancerCollectorTrait
File
- src/Routing/ RouteEnhancerCollectorTrait.php, line 17 
- Contains \Drupal\page_manager\Routing\RouteEnhancerCollectorTrait.
Namespace
Drupal\page_manager\RoutingView source
trait RouteEnhancerCollectorTrait {
  /**
   * @var \Symfony\Cmf\Component\Routing\Enhancer\RouteEnhancerInterface[]
   */
  protected $enhancers = array();
  /**
   * Cached sorted list of enhancers
   *
   * @var \Symfony\Cmf\Component\Routing\Enhancer\RouteEnhancerInterface[]
   */
  protected $sortedEnhancers = array();
  /**
   * 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 \Symfony\Cmf\Component\Routing\Enhancer\RouteEnhancerInterface $enhancer
   * @param int $priority
   *
   * @return $this
   */
  public function addRouteEnhancer(RouteEnhancerInterface $enhancer, $priority = 0) {
    if (empty($this->enhancers[$priority])) {
      $this->enhancers[$priority] = array();
    }
    $this->enhancers[$priority][] = $enhancer;
    $this->sortedEnhancers = array();
    return $this;
  }
  /**
   * Sorts the enhancers and flattens them.
   *
   * @return \Symfony\Cmf\Component\Routing\Enhancer\RouteEnhancerInterface[]
   *   The enhancers ordered by priority.
   */
  protected function getRouteEnhancers() {
    if (empty($this->sortedEnhancers)) {
      $this->sortedEnhancers = $this
        ->sortRouteEnhancers();
    }
    return $this->sortedEnhancers;
  }
  /**
   * Sort enhancers by priority.
   *
   * The highest priority number is the highest priority (reverse sorting).
   *
   * @return \Symfony\Cmf\Component\Routing\Enhancer\RouteEnhancerInterface[]
   *   The sorted enhancers.
   */
  protected function sortRouteEnhancers() {
    $sortedEnhancers = array();
    krsort($this->enhancers);
    foreach ($this->enhancers as $enhancers) {
      $sortedEnhancers = array_merge($sortedEnhancers, $enhancers);
    }
    return $sortedEnhancers;
  }
}Members
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| RouteEnhancerCollectorTrait:: | protected | property | ||
| RouteEnhancerCollectorTrait:: | protected | property | Cached sorted list of enhancers | |
| RouteEnhancerCollectorTrait:: | public | function | Add route enhancers to the router to let them generate information on matched routes. | |
| RouteEnhancerCollectorTrait:: | protected | function | Sorts the enhancers and flattens them. | |
| RouteEnhancerCollectorTrait:: | protected | function | Sort enhancers by priority. | 
