8000 [Routing] removed tree structure from RouteCollection · symfony/symfony@98f3ca8 · GitHub
[go: up one dir, main page]

Skip to content

Commit 98f3ca8

Browse files
committed
[Routing] removed tree structure from RouteCollection
1 parent fae3e35 commit 98f3ca8

File tree

5 files changed

+65
-194
lines changed

5 files changed

+65
-194
lines changed

src/Symfony/Bundle/FrameworkBundle/Routing/Router.php

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -84,19 +84,15 @@ public function warmUp($cacheDir)
8484
private function resolveParameters(RouteCollection $collection)
8585
{
8686
foreach ($collection as $route) {
87-
if ($route instanceof RouteCollection) {
88-
$this->resolveParameters($route);
89-
} else {
90-
foreach ($route->getDefaults() as $name => $value) {
91-
$route->setDefault($name, $this->resolve($value));
92-
}
93-
94-
foreach ($route->getRequirements() as $name => $value) {
95-
$route->setRequirement($name, $this->resolve($value));
96-
}
97-
98-
$route->setPattern($this->resolve($route->getPattern()));
87+
foreach ($route->getDefaults() as $name => $value) {
88+
$route->setDefault($name, $this->resolve($value));
9989
}
90+
91+
foreach ($route->getRequirements() as $name => $value) {
92+
$route->setRequirement($name, $this->resolve($value));
93+
}
94+
95+
$route->setPattern($this->resolve($route->getPattern()));
10096
}
10197
}
10298

src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php

Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ private function compileRoutes(RouteCollection $routes, $supportsRedirections)
111111
{
112112
$fetchedHostname = false;
113113

114-
$routes = $this->flattenRouteCollection($routes);
115114
$groups = $this->groupRoutesByHostnameRegex($routes);
116115
$code = '';
117116

@@ -321,31 +320,6 @@ private function compileRoute(Route $route, $name, $supportsRedirections, $paren
321320
return $code;
322321
}
323322

324-
/**
325-
* Flattens a tree of routes to a single collection.
326-
*
327-
* @param RouteCollection $routes Collection of routes
328-
* @param DumperCollection|null $to A DumperCollection to add routes to
329-
*
330-
* @return DumperCollection
331-
*/
332-
private function flattenRouteCollection(RouteCollection $routes, DumperCollection $to = null)
333-
{
334-
if (null === $to) {
335-
$to = new DumperCollection();
336-
}
337-
338-
foreach ($routes as $name => $route) {
339-
if ($route instanceof RouteCollection) {
340-
$this->flattenRouteCollection($route, $to);
341-
} else {
342-
$to->add(new DumperRoute($name, $route));
343-
}
344-
}
345-
346-
return $to;
347-
}
348-
349323
/**
350324
* Groups consecutive routes having the same hostname regex.
351325
*
@@ -355,22 +329,22 @@ private function flattenRouteCollection(RouteCollection $routes, DumperCollectio
355329
*
356330
* @return DumperCollection A collection with routes grouped by hostname regex in sub-collections
357331
*/
358-
private function groupRoutesByHostnameRegex(DumperCollection $routes)
332+
private function groupRoutesByHostnameRegex(RouteCollection $routes)
359333
{
360334
$groups = new DumperCollection();
361335

362336
$currentGroup = new DumperCollection();
363337
$currentGroup->setAttribute('hostname_regex', null);
364338
$groups->add($currentGroup);
365339

366-
foreach ($routes as $route) {
367-
$hostnameRegex = $route->getRoute()->compile()->getHostnameRegex();
340+
foreach ($routes as $name => $route) {
341+
$hostnameRegex = $route->compile()->getHostnameRegex();
368342
if ($currentGroup->getAttribute('hostname_regex') !== $hostnameRegex) {
369343
$currentGroup = new DumperCollection();
370344
$currentGroup->setAttribute('hostname_regex', $hostnameRegex);
371345
$groups->add($currentGroup);
372346
}
373-
$currentGroup->add($route);
347+
$currentGroup->add(new DumperRoute($name, $route));
374348
}
375349

376350
return $groups;

src/Symfony/Component/Routing/Matcher/TraceableUrlMatcher.php

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,6 @@ public function getTraces($pathinfo)
4444
protected function matchCollection($pathinfo, RouteCollection $routes)
4545
{
4646
foreach ($routes as $name => $route) {
47-
if ($route instanceof RouteCollection) {
48-
if (!$ret = $this->matchCollection($pathinfo, $route)) {
49-
continue;
50-
}
51-
52-
return true;
53-
}
54-
5547
$compiledRoute = $route->compile();
5648

5749
if (!preg_match($compiledRoute->getRegex(), $pathinfo, $matches)) {

src/Symfony/Component/Routing/Matcher/UrlMatcher.php

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -105,18 +105,6 @@ public function match($pathinfo)
105105
protected function matchCollection($pathinfo, RouteCollection $routes)
106106
{
107107
foreach ($routes as $name => $route) {
108-
if ($route instanceof RouteCollection) {
109-
if (false === strpos($route->getPrefix(), '{') && $route->getPrefix() !== substr($pathinfo, 0, strlen($route->getPrefix()))) {
110-
continue;
111-
}
112-
113-
if (!$ret = $this->matchCollection($pathinfo, $route)) {
114-
continue;
115-
}
116-
117-
return $ret;
118-
}
119-
120108
$compiledRoute = $route->compile();
121109

122110
// check the static prefix of the URL first. Only use the more expensive preg_match when it matches

0 commit comments

Comments
 (0)
0