$collection =
new RouteCollection();
foreach ($this->
getRouteDefinitions() as $routes) { // The top-level 'routes_callback' is a list of methods in controller
// syntax, see \Drupal\Core\Controller\ControllerResolver. These methods
// should return a set of \Symfony\Component\Routing\Route objects, either
// in an associative array keyed by the route name, which will be iterated
// over and added to the collection for this provider, or as a new
// \Symfony\Component\Routing\RouteCollection object, which will be added
// to the collection.
if (isset($routes['route_callbacks'
])) { foreach ($routes['route_callbacks'
] as $route_callback) { $callback =
$this->controllerResolver->
getControllerFromDefinition($route_callback);
if ($callback_routes =
call_user_func($callback)) { // If a RouteCollection is returned, add the whole collection.
if ($callback_routes instanceof RouteCollection
) { $collection->
addCollection($callback_routes);
} // Otherwise, add each Route object individually.
else { foreach ($callback_routes as $name =>
$callback_route) { $collection->
add($name,
$callback_route);
} } }