Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 35dfe3e

Browse files
author
Jelte Steijaert
committed
Bug #16343 [Router] Too many Routes ?
1 parent e2022ce commit 35dfe3e

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

src/Symfony/Component/Routing/Generator/Dumper/PhpGeneratorDumper.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public function dump(array $options = array())
5353
*/
5454
class {$options['class']} extends {$options['base_class']}
5555
{
56-
private static \$declaredRoutes = {$this->generateDeclaredRoutes()};
56+
private static \$declaredRoutes;
5757
5858
/**
5959
* Constructor.
@@ -62,6 +62,9 @@ public function __construct(RequestContext \$context, LoggerInterface \$logger =
6262
{
6363
\$this->context = \$context;
6464
\$this->logger = \$logger;
65+
if (null === self::\$declaredRoutes) {
66+
self::\$declaredRoutes = {$this->generateDeclaredRoutes()};
67+
}
6568
}
6669
6770
{$this->generateGenerateMethod()}

src/Symfony/Component/Routing/Tests/Generator/Dumper/PhpGeneratorDumperTest.php

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,21 @@ class PhpGeneratorDumperTest extends \PHPUnit_Framework_TestCase
3434
*/
3535
private $testTmpFilepath;
3636

37+
/**
38+
* @var string
39+
*/
40+
private $largeTestTmpFilepath;
41+
3742
protected function setUp()
3843
{
3944
parent::setUp();
4045

4146
$this->routeCollection = new RouteCollection();
4247
$this->generatorDumper = new PhpGeneratorDumper($this->routeCollection);
4348
$this->testTmpFilepath = sys_get_temp_dir().DIRECTORY_SEPARATOR.'php_generator.'.$this->getName().'.php';
49+
$this->largeTestTmpFilepath = sys_get_temp_dir().DIRECTORY_SEPARATOR.'php_generator.'.$this->getName().'.large.php';
4450
@unlink($this->testTmpFilepath);
51+
@unlink($this->largeTestTmpFilepath);
4552
}
4653

4754
protected function tearDown()
@@ -76,6 +83,33 @@ public function testDumpWithRoutes()
7683
$this->assertEquals($relativeUrlWithoutParameter, '/app.php/testing2');
7784
}
7885

86+
public function testDumpWithTooManyRoutes()
87+
{
88+
$this->routeCollection->add('Test', new Route('/testing/{foo}'));
89+
for ( $i = 0; $i < 32769; ++$i ) {
90+
$this->routeCollection->add('route_'.$i, new Route('/route_'.$i));
91+
}
92+
$this->routeCollection->add('Test2', new Route('/testing2'));
93+
94+
$data = $this->generatorDumper->dump(array(
95+
'class' => 'ProjectLargeUrlGenerator',
96+
));
97+
file_put_contents($this->largeTestTmpFilepath, $data);
98+
include $this->largeTestTmpFilepath;
99+
100+
$projectUrlGenerator = new \ProjectLargeUrlGenerator(new RequestContext('/app.php'));
101+
102+
$absoluteUrlWithParameter = $projectUrlGenerator->generate('Test', array('foo' => 'bar'), UrlGeneratorInterface::ABSOLUTE_URL);
103+
$absoluteUrlWithoutParameter = $projectUrlGenerator->generate('Test2', array(), UrlGeneratorInterface::ABSOLUTE_URL);
104+
$relativeUrlWithParameter = $projectUrlGenerator->generate('Test', array('foo' => 'bar'), UrlGeneratorInterface::ABSOLUTE_PATH);
105+
$relativeUrlWithoutParameter = $projectUrlGenerator->generate('Test2', array(), UrlGeneratorInterface::ABSOLUTE_PATH);
106+
107+
$this->assertEquals($absoluteUrlWithParameter, 'http://localhost/app.php/testing/bar');
108+
$this->assertEquals($absoluteUrlWithoutParameter, 'http://localhost/app.php/testing2');
109+
$this->assertEquals($relativeUrlWithParameter, '/app.php/testing/bar');
110+
$this->assertEquals($relativeUrlWithoutParameter, '/app.php/testing2');
111+
}
112+
79113
/**
80114
* @expectedException \InvalidArgumentException
81115
*/

0 commit comments

Comments
 (0)