10000 Bug #16343 [Router] Too many Routes ? · jelte/symfony@358aa72 · GitHub
[go: up one dir, main page]

Skip to content

Commit 358aa72

Browse files
author
Jelte Steijaert
committed
Bug symfony#16343 [Router] Too many Routes ?
1 parent e2022ce commit 358aa72

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

src/Symfony/Component/Routing/Generator/Dumper/PhpGeneratorDumper.php

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*
1717
* @author Fabien Potencier <fabien@symfony.com>
1818
* @author Tobias Schultze <http://tobion.de>
19+
* @author Jelte Steijaert <jelte@khepri.be>
1920
*/
2021
class PhpGeneratorDumper extends GeneratorDumper
2122
{
@@ -78,7 +79,8 @@ public function __construct(RequestContext \$context, LoggerInterface \$logger =
7879
*/
7980
private function generateDeclaredRoutes()
8081
{
81-
$routes = "array(\n";
82+
$routes = "array(\n array(\n";
83+
$i = 0;
8284
foreach ($this->getRoutes()->all() as $name => $route) {
8385
$compiledRoute = $route->compile();
8486

@@ -90,7 +92,13 @@ private function generateDeclaredRoutes()
9092
$properties[] = $compiledRoute->getHostTokens();
9193
$properties[] = $route->getSchemes();
9294

93-
$routes .= sprintf(" '%s' => %s,\n", $name, str_replace("\n", '', var_export($properties, true)));
95+
$routes .= sprintf(" '%s' => %s,\n", $name, str_replace("\n", '', var_export($properties, true)));
96+
if ( $i++%5000 == 0 ) {
97+
$routes .= " ),\n array(\n";
98+
}
99+
}
100+
if ($i%5000 != 0 || $i == 0) {
101+
$routes .= " ),\n";
94102
}
95103
$routes .= ' )';
96104

@@ -107,14 +115,23 @@ private function generateGenerateMethod()
107115
return <<<EOF
108116
public function generate(\$name, \$parameters = array(), \$referenceType = self::ABSOLUTE_PATH)
109117
{
110-
if (!isset(self::\$declaredRoutes[\$name])) {
118+
if (null === (\$route = \$this->getRoute(\$name))) {
111119
throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', \$name));
112120
}
113121
114-
list(\$variables, \$defaults, \$requirements, \$tokens, \$hostTokens, \$requiredSchemes) = self::\$declaredRoutes[\$name];
122+
list(\$variables, \$defaults, \$requirements, \$tokens, \$hostTokens, \$requiredSchemes) = \$route;
115123
116124
return \$this->doGenerate(\$variables, \$defaults, \$requirements, \$tokens, \$parameters, \$name, \$referenceType, \$hostTokens, \$requiredSchemes);
117125
}
126+
127+
private function getRoute(\$name) {
128+
foreach( self::\$declaredRoutes as \$routes ) {
129+
if (isset(\$routes[\$name])) {
130+
return \$routes[\$name];
131+
}
132+
}
133+
return;
134+
}
118135
EOF;
119136
}
120137
}

0 commit comments

Comments
 (0)
0