Skip to content

Commit e8d6287

Browse files
Merge branch '4.4' into 5.0
* 4.4: Parse and render anonymous classes correctly on php 8 Enable APCu for the php 8 build. [Process] Fix failing test on php 8. [HttpKernel] fix test Make PHP 8 green on Travis Revert "[Cache] allow DBAL v3" [PropertyAccessor] Added missing property path on php 8. Don't execute tests with DBAL 2.x on php 8.
2 parents e5279de + 1c06b83 commit e8d6287

File tree

6 files changed

+33
-13
lines changed

6 files changed

+33
-13
lines changed

Kernel.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -218,10 +218,7 @@ public function getBundles()
218218
public function getBundle(string $name)
219219
{
220220
if (!isset($this->bundles[$name])) {
221-
$class = static::class;
222-
$class = 'c' === $class[0] && 0 === strpos($class, "class@anonymous\0") ? get_parent_class($class).'@anonymous' : $class;
223-
224-
throw new \InvalidArgumentException(sprintf('Bundle "%s" does not exist or it is not enabled. Maybe you forgot to add it in the "registerBundles()" method of your "%s.php" file?', $name, $class));
221+
throw new \InvalidArgumentException(sprintf('Bundle "%s" does not exist or it is not enabled. Maybe you forgot to add it in the "registerBundles()" method of your "%s.php" file?', $name, get_debug_type($this)));
225222
}
226223

227224
return $this->bundles[$name];
@@ -394,8 +391,9 @@ protected function build(ContainerBuilder $container)
394391
protected function getContainerClass()
395392
{
396393
$class = static::class;
397-
$class = 'c' === $class[0] && 0 === strpos($class, "class@anonymous\0") ? get_parent_class($class).str_replace('.', '_', ContainerBuilder::hash($class)) : $class;
394+
$class = false !== strpos($class, "@anonymous\0") ? get_parent_class($class).str_replace('.', '_', ContainerBuilder::hash($class)) : $class;
398395
$class = str_replace('\\', '_', $class).ucfirst($this->environment).($this->debug ? 'Debug' : '').'Container';
396+
399397
if (!preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $class)) {
400398
throw new \InvalidArgumentException(sprintf('The environment "%s" contains invalid characters, it can only contain characters allowed in PHP class names.', $this->environment));
401399
}

Tests/Controller/ArgumentResolverTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -204,19 +204,19 @@ public function testGetNullableArguments()
204204
$request = Request::create('/');
205205
$request->attributes->set('foo', 'foo');
206206
$request->attributes->set('bar', new \stdClass());
207-
$request->attributes->set('mandatory', 'mandatory');
207+
$request->attributes->set('last', 'last');
208208
$controller = [new NullableController(), 'action'];
209209

210-
$this->assertEquals(['foo', new \stdClass(), 'value', 'mandatory'], self::$resolver->getArguments($request, $controller));
210+
$this->assertEquals(['foo', new \stdClass(), 'value', 'last'], self::$resolver->getArguments($request, $controller));
211211
}
212212

213213
public function testGetNullableArgumentsWithDefaults()
214214
{
215215
$request = Request::create('/');
216-
$request->attributes->set('mandatory', 'mandatory');
216+
$request->attributes->set('last', 'last');
217217
$controller = [new NullableController(), 'action'];
218218

219-
$this->assertEquals([null, null, 'value', 'mandatory'], self::$resolver->getArguments($request, $controller));
219+
$this->assertEquals([null, null, 'value', 'last'], self::$resolver->getArguments($request, $controller));
220220
}
221221

222222
public function testGetSessionArguments()

Tests/ControllerMetadata/ArgumentMetadataFactoryTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public function testSignature5()
8080

8181
$this->assertEquals([
8282
new ArgumentMetadata('foo', 'array', false, true, null, true),
83-
new ArgumentMetadata('bar', null, false, false, null),
83+
new ArgumentMetadata('bar', null, false, true, null, true),
8484
], $arguments);
8585
}
8686

@@ -113,7 +113,7 @@ public function testNullableTypesSignature()
113113
new ArgumentMetadata('foo', 'string', false, false, null, true),
114114
new ArgumentMetadata('bar', \stdClass::class, false, false, null, true),
115115
new ArgumentMetadata('baz', 'string', false, true, 'value', true),
116-
new ArgumentMetadata('mandatory', null, false, false, null, true),
116+
new ArgumentMetadata('last', 'string', false, true, '', false),
117117
], $arguments);
118118
}
119119

@@ -133,7 +133,7 @@ private function signature4($foo = 'default', $bar = 500, $baz = [])
133133
{
134134
}
135135

136-
private function signature5(array $foo = null, $bar)
136+
private function signature5(array $foo = null, $bar = null)
137137
{
138138
}
139139
}

Tests/Fixtures/Controller/NullableController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
class NullableController
1515
{
16-
public function action(?string $foo, ?\stdClass $bar, ?string $baz = 'value', $mandatory)
16+
public function action(?string $foo, ?\stdClass $bar, ?string $baz = 'value', string $last = '')
1717
{
1818
}
1919
}

Tests/KernelTest.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,27 @@ public function testKernelStartTimeIsResetWhileBootingAlreadyBootedKernel()
527527
$this->assertGreaterThan($preReBoot, $kernel->getStartTime());
528528
}
529529

530+
public function testAnonymousKernelGeneratesValidContainerClass(): void
531+
{
532+
$kernel = new class('test', true) extends Kernel {
533+
public function registerBundles(): iterable
534+
{
535+
return [];
536+
}
537+
538+
public function registerContainerConfiguration(LoaderInterface $loader): void
539+
{
540+
}
541+
542+
public function getContainerClass(): string
543+
{
544+
return parent::getContainerClass();
545+
}
546+
};
547+
548+
$this->assertRegExp('/^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*TestDebugContainer$/', $kernel->getContainerClass());
549+
}
550+
530551
/**
531552
* Returns a mock for the BundleInterface.
532553
*/

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"symfony/http-foundation": "^4.4|^5.0",
2323
"symfony/polyfill-ctype": "^1.8",
2424
"symfony/polyfill-php73": "^1.9",
25+
"symfony/polyfill-php80": "^1.15",
2526
"psr/log": "~1.0"
2627
},
2728
"require-dev": {

0 commit comments

Comments
 (0)