Merge remote branch 'lmcd/master'

* lmcd/master:
  $code referenced but not defined in compileRoute()
  [Routing] Optimised the PHP URL matcher dumper The cached URL matcher classes contain some unneeded logic. Consider the following example:
This commit is contained in:
Fabien Potencier 2011-06-11 07:32:22 +02:00
commit 96554e645a

View File

@ -69,7 +69,7 @@ $code
EOF; EOF;
} }
private function compileRoutes(RouteCollection $routes, $supportsRedirections) private function compileRoutes(RouteCollection $routes, $supportsRedirections, $parentPrefix = null)
{ {
$code = array(); $code = array();
foreach ($routes as $name => $route) { foreach ($routes as $name => $route) {
@ -82,7 +82,7 @@ EOF;
$indent = ' '; $indent = ' ';
} }
foreach ($this->compileRoutes($route, $supportsRedirections) as $line) { foreach ($this->compileRoutes($route, $supportsRedirections, $prefix) as $line) {
foreach (explode("\n", $line) as $l) { foreach (explode("\n", $line) as $l) {
$code[] = $indent.$l; $code[] = $indent.$l;
} }
@ -92,7 +92,7 @@ EOF;
$code[] = " }\n"; $code[] = " }\n";
} }
} else { } else {
foreach ($this->compileRoute($route, $name, $supportsRedirections) as $line) { foreach ($this->compileRoute($route, $name, $supportsRedirections, $parentPrefix) as $line) {
$code[] = $line; $code[] = $line;
} }
} }
@ -101,8 +101,9 @@ EOF;
return $code; return $code;
} }
private function compileRoute(Route $route, $name, $supportsRedirections) private function compileRoute(Route $route, $name, $supportsRedirections, $parentPrefix = null)
{ {
$code = array();
$compiledRoute = $route->compile(); $compiledRoute = $route->compile();
$conditions = array(); $conditions = array();
$hasTrailingSlash = false; $hasTrailingSlash = false;
@ -115,7 +116,7 @@ EOF;
$conditions[] = sprintf("\$pathinfo === '%s'", str_replace('\\', '', $m['url'])); $conditions[] = sprintf("\$pathinfo === '%s'", str_replace('\\', '', $m['url']));
} }
} else { } else {
if ($compiledRoute->getStaticPrefix()) { if ($compiledRoute->getStaticPrefix() && $compiledRoute->getStaticPrefix() != $parentPrefix) {
$conditions[] = sprintf("0 === strpos(\$pathinfo, '%s')", $compiledRoute->getStaticPrefix()); $conditions[] = sprintf("0 === strpos(\$pathinfo, '%s')", $compiledRoute->getStaticPrefix());
} }