8000 added checks for public services on compiler passes that use service … · symfony/symfony@65131e2 · GitHub
[go: up one dir, main page]

Skip to content

Commit 65131e2

Browse files
committed
added checks for public services on compiler passes that use service id and not references
1 parent 470dc3e commit 65131e2

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConstraintValidatorsPass.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,17 @@ public function process(ContainerBuilder $container)
2828
$validators[$attributes[0]['alias']] = $id;
2929
}
3030

31-
$validators[$container->getDefinition($id)->getClass()] = $id;
31+
$definition = $container->getDefinition($id);
32+
33+
if (!$definition->isPublic()) {
34+
throw new InvalidArgumentException(sprintf('The service "%s" must be public as it can be lazy-loaded.', $id));
35+
}
36+
37+
if ($definition->isAbstract()) {
38+
throw new InvalidArgumentException(sprintf('The service "%s" must not be abstract as it can be lazy-loaded.', $id));
39+
}
40+
41+
$validators[$definition->getClass()] = $id;
3242
}
3343

3444
$container->getDefinition('validator.validator_factory')->replaceArgument(1, $validators);

src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public function build(ContainerBuilder $container)
7575
// but as late as possible to get resolved parameters
7676
$container->addCompilerPass(new RegisterListenersPass(), PassConfig::TYPE_BEFORE_REMOVING);
7777
$container->addCompilerPass(new TemplatingPass());
78-
$container->addCompilerPass(new AddConstraintValidatorsPass());
78+
$container->addCompilerPass(new AddConstraintValidatorsPass(), PassConfig::TYPE_BEFORE_REMOVING);
7979
$container->addCompilerPass(new AddValidatorInitializersPass());
8080
$container->addCompilerPass(new AddConsoleCommandPass());
8181
$container->addCompilerPass(new FormPass());

0 commit comments

Comments
 (0)
0