Browse Source

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:
Fabien Potencier 14 years ago
parent
commit
96554e645a
1 changed files with 6 additions and 5 deletions
  1. 6 5
      src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php

+ 6 - 5
src/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php

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