diff --git a/core/lib/Drupal/Core/Routing/RouteBuilder.php b/core/lib/Drupal/Core/Routing/RouteBuilder.php index 0dce99d..af60f2a 100644 --- a/core/lib/Drupal/Core/Routing/RouteBuilder.php +++ b/core/lib/Drupal/Core/Routing/RouteBuilder.php @@ -45,6 +45,13 @@ class RouteBuilder implements RouteBuilderInterface, DestructableInterface { protected $dispatcher; /** + * The yaml discovery used to find all the .routing.yml files. + * + * @var \Drupal\Component\Discovery\YamlDiscovery + */ + protected $yamlDiscovery; + + /** * The module handler. * * @var \Drupal\Core\Extension\ModuleHandlerInterface @@ -173,6 +180,7 @@ public function rebuild() { $route = new Route($route_info['path'], $route_info['defaults'], $route_info['requirements'], $route_info['options']); $collection->add($name, $route); } + } // DYNAMIC is supposed to be used to add new routes based upon all the @@ -225,8 +233,10 @@ public function destruct() { * The defined routes, keyed by provider. */ protected function getRouteDefinitions() { - $discovery = new YamlDiscovery('routing', $this->moduleHandler->getModuleDirectories()); - return $discovery->findAll(); + if (!isset($this->yamlDiscovery)) { + $this->yamlDiscovery = new YamlDiscovery('routing', $this->moduleHandler->getModuleDirectories()); + } + return $this->yamlDiscovery->findAll(); } }