Skip to content

Commit

Permalink
Merge branch '6.4' into 7.0
Browse files Browse the repository at this point in the history
* 6.4:
  [HttpKernel] Fix deps=low
  [HttpKernel] Allow tagged controllers in ControllerResolver
  bugfix php jit issue with ternary operator
  • Loading branch information
nicolas-grekas committed Feb 26, 2024
2 parents 9425d4f + e711f3e commit 27760c5
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public function process(ContainerBuilder $container): void

$parameterBag = $container->getParameterBag();
$controllers = [];
$controllerClasses = [];

$publicAliases = [];
foreach ($container->getAliases() as $id => $alias) {
Expand Down Expand Up @@ -71,6 +72,8 @@ public function process(ContainerBuilder $container): void
throw new InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id));
}

$controllerClasses[] = $class;

// get regular public methods
$methods = [];
$arguments = [];
Expand Down Expand Up @@ -224,5 +227,10 @@ public function process(ContainerBuilder $container): void
}

$container->setAlias('argument_resolver.controller_locator', (string) $controllerLocatorRef);

if ($container->hasDefinition('controller_resolver')) {
$container->getDefinition('controller_resolver')
->addMethodCall('allowControllers', [array_unique($controllerClasses)]);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -557,6 +557,30 @@ public function testTaggedIteratorAndTaggedLocatorAttributes()
$this->assertTrue($argLocator->has('foo'));
$this->assertSame('bar', $argLocator->get('foo'));
}

public function testTaggedControllersAreRegisteredInControllerResolver()
{
$container = new ContainerBuilder();
$container->register('argument_resolver.service')->addArgument([]);
$controllerResolver = $container->register('controller_resolver');

$container->register('foo', RegisterTestController::class)
->addTag('controller.service_arguments')
;

// duplicates should be removed
$container->register('bar', RegisterTestController::class)
->addTag('controller.service_arguments')
;

// services with no tag should be ignored
$container->register('baz', ControllerDummy::class);

$pass = new RegisterControllerArgumentLocatorsPass();
$pass->process($container);

$this->assertSame([['allowControllers', [[RegisterTestController::class]]]], $controllerResolver->getMethodCalls());
}
}

class RegisterTestController
Expand Down
2 changes: 1 addition & 1 deletion src/Symfony/Component/HttpKernel/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
"symfony/process": "^6.4|^7.0",
"symfony/property-access": "^6.4|^7.0",
"symfony/routing": "^6.4|^7.0",
"symfony/serializer": "^6.4|^7.0",
"symfony/serializer": "^6.4.4|^7.0.4",
"symfony/stopwatch": "^6.4|^7.0",
"symfony/translation": "^6.4|^7.0",
"symfony/translation-contracts": "^2.5|^3",
Expand Down
13 changes: 11 additions & 2 deletions src/Symfony/Component/VarExporter/Internal/Hydrator.php
Original file line number Diff line number Diff line change
Expand Up @@ -262,10 +262,19 @@ public static function getPropertyScopes($class): array
$name = $property->name;

if (\ReflectionProperty::IS_PRIVATE & $flags) {
$propertyScopes["\0$class\0$name"] = $propertyScopes[$name] = [$class, $name, $flags & \ReflectionProperty::IS_READONLY ? $class : null, $property];
$readonlyScope = null;
if ($flags & \ReflectionProperty::IS_READONLY) {
$readonlyScope = $class;
}
$propertyScopes["\0$class\0$name"] = $propertyScopes[$name] = [$class, $name, $readonlyScope, $property];

continue;
}
$propertyScopes[$name] = [$class, $name, $flags & \ReflectionProperty::IS_READONLY ? $property->class : null, $property];
$readonlyScope = null;
if ($flags & \ReflectionProperty::IS_READONLY) {
$readonlyScope = $property->class;
}
$propertyScopes[$name] = [$class, $name, $readonlyScope, $property];

if (\ReflectionProperty::IS_PROTECTED & $flags) {
$propertyScopes["\0*\0$name"] = $propertyScopes[$name];
Expand Down

0 comments on commit 27760c5

Please sign in to comment.