Skip to content

Commit 358aa72

Browse files
author
Jelte Steijaert
committed
Bug #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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy