function AttributeRouteDiscovery::collectRoutes

Same name and namespace in other branches
  1. main core/lib/Drupal/Core/Routing/AttributeRouteDiscovery.php \Drupal\Core\Routing\AttributeRouteDiscovery::collectRoutes()

Creates a collection of routes to add to the route builder.

Return value

iterable<int, \Symfony\Component\Routing\RouteCollection> The routes.

Overrides StaticRouteDiscoveryBase::collectRoutes

File

core/lib/Drupal/Core/Routing/AttributeRouteDiscovery.php, line 39

Class

AttributeRouteDiscovery
Discovers routes using Symfony's Route attribute.

Namespace

Drupal\Core\Routing

Code

protected function collectRoutes() : iterable {
  foreach ($this->namespaces as $namespace => $directory) {
    $directory .= '/Controller';
    $namespace .= '\\Controller';
    if (is_dir($directory)) {
      $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($directory, \RecursiveDirectoryIterator::SKIP_DOTS));
      foreach ($iterator as $fileinfo) {
        if ($fileinfo->getExtension() == 'php') {
          $subPath = $iterator->getSubIterator()
            ->getSubPath();
          $subPath = $subPath ? str_replace(DIRECTORY_SEPARATOR, '\\', $subPath) . '\\' : '';
          $class = $namespace . '\\' . $subPath . $fileinfo->getBasename('.php');
          yield $this->createRouteCollection($class);
        }
      }
    }
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.