16
16
*
17
17
* @author Fabien Potencier <fabien@symfony.com>
18
18
* @author Tobias Schultze <http://tobion.de>
19
+ * @author Jelte Steijaert <jelte@khepri.be>
19
20
*/
20
21
class PhpGeneratorDumper extends GeneratorDumper
21
22
{
@@ -78,7 +79,8 @@ public function __construct(RequestContext \$context, LoggerInterface \$logger =
78
79
*/
79
80
private function generateDeclaredRoutes ()
80
81
{
81
- $ routes = "array( \n" ;
82
+ $ routes = "array( \n array( \n" ;
83
+ $ i = 0 ;
82
84
foreach ($ this ->getRoutes ()->all () as $ name => $ route ) {
83
85
$ compiledRoute = $ route ->compile ();
84
86
@@ -90,7 +92,13 @@ private function generateDeclaredRoutes()
90
92
$ properties [] = $ compiledRoute ->getHostTokens ();
91
93
$ properties [] = $ route ->getSchemes ();
92
94
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" ;
94
102
}
95
103
$ routes .= ' ) ' ;
96
104
@@ -107,14 +115,23 @@ private function generateGenerateMethod()
107
115
return <<<EOF
108
116
public function generate( \$name, \$parameters = array(), \$referenceType = self::ABSOLUTE_PATH)
109
117
{
110
- if (!isset(self:: \$ declaredRoutes[ \$ name] )) {
118
+ if (null === ( \$ route = \$ this->getRoute( \$ name) )) {
111
119
throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', \$name));
112
120
}
113
121
114
- list( \$variables, \$defaults, \$requirements, \$tokens, \$hostTokens, \$requiredSchemes) = self:: \$ declaredRoutes[ \$ name] ;
122
+ list( \$variables, \$defaults, \$requirements, \$tokens, \$hostTokens, \$requiredSchemes) = \$ route ;
115
123
116
124
return \$this->doGenerate( \$variables, \$defaults, \$requirements, \$tokens, \$parameters, \$name, \$referenceType, \$hostTokens, \$requiredSchemes);
117
125
}
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
+ }
118
135
EOF ;
119
136
}
120
137
}
0 commit comments