Bläddra i källkod

[Routing] added a proper exception when a route pattern references the same variable more than once (closes #3344)

Fabien Potencier 13 år sedan
förälder
incheckning
ec7fb0bdd6

+ 5 - 0
src/Symfony/Component/Routing/RouteCompiler.php

@@ -51,6 +51,11 @@ class RouteCompiler implements RouteCompilerInterface
             }
 
             $tokens[] = array('variable', $match[0][0][0], $regexp, $var);
+
+            if (in_array($var, $variables)) {
+                throw new \LogicException(sprintf('Route pattern "%s" cannot reference variable name "%s" more than once.', $route->getPattern(), $var));
+            }
+
             $variables[] = $var;
         }
 

+ 10 - 0
tests/Symfony/Tests/Component/Routing/RouteCompilerTest.php

@@ -98,4 +98,14 @@ class RouteCompilerTest extends \PHPUnit_Framework_TestCase
                 )),
         );
     }
+
+    /**
+     * @expectedException \LogicException
+     */
+    public function testRouteWithSameVariableTwice()
+    {
+        $route = new Route('/{name}/{name}');
+
+        $compiled = $route->compile();
+    }
 }