Skip to content

Commit ee40359

Browse files
Merge branch '5.4' into 6.0
* 5.4: Revert "minor #47721 [Notifier] Use local copy of stella-maris/clock when testing (nicolas-grekas)" [Yaml] Minor: Update Inline parse phpdoc [FrameworkBundle] Fix deprecation when accessing a "container.private" service from the test container [DependencyInjection] Fix dumping inlined withers [HttpClient] Move Http clients data collecting at a late level [DependencyInjection] Fix support for named arguments on non-autowired services [FrameworkBundle] restore call to addGlobalIgnoredName Allow EmailValidator 4 Fix detecting mapping with one line annotations
2 parents 03eff17 + a208ee5 commit ee40359

File tree

4 files changed

+24
-1
lines changed

4 files changed

+24
-1
lines changed

DependencyInjection/Compiler/TestServiceContainerRealRefPass.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler;
1313

14+
use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
1415
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
1516
use Symfony\Component\DependencyInjection\ContainerBuilder;
1617
use Symfony\Component\DependencyInjection\Reference;
@@ -38,6 +39,16 @@ public function process(ContainerBuilder $container)
3839
}
3940
}
4041

42+
foreach ($container->getAliases() as $id => $target) {
43+
while ($container->hasAlias($target = (string) $target)) {
44+
$target = $container->getAlias($target);
45+
}
46+
47+
if ($definitions[$target]->hasTag('container.private')) {
48+
$privateServices[$id] = new ServiceClosureArgument(new Reference($target));
49+
}
50+
}
51+
4152
$privateContainer->replaceArgument(0, $privateServices);
4253
}
4354
}

DependencyInjection/FrameworkExtension.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1569,11 +1569,14 @@ private function registerAnnotationsConfiguration(array $config, ContainerBuilde
15691569

15701570
$loader->load('annotations.php');
15711571

1572+
// registerUniqueLoader exists since doctrine/annotations v1.6
15721573
if (!method_exists(AnnotationRegistry::class, 'registerUniqueLoader')) {
1574+
// registerLoader exists only in doctrine/annotations v1
15731575
if (method_exists(AnnotationRegistry::class, 'registerLoader')) {
15741576
$container->getDefinition('annotations.dummy_registry')
15751577
->setMethodCalls([['registerLoader', ['class_exists']]]);
15761578
} else {
1579+
// remove the dummy registry when doctrine/annotations v2 is used
15771580
$container->removeDefinition('annotations.dummy_registry');
15781581
}
15791582
}

Resources/config/annotations.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
->set('annotations.reader', AnnotationReader::class)
2626
->call('addGlobalIgnoredName', [
2727
'required',
28-
service('annotations.dummy_registry')->ignoreOnInvalid(), // dummy arg to register class_exists as annotation loader only when required
28+
service('annotations.dummy_registry')->nullOnInvalid(), // dummy arg to register class_exists as annotation loader only when required
2929
])
3030

3131
->set('annotations.dummy_registry', AnnotationRegistry::class)

Tests/DependencyInjection/Compiler/TestServiceContainerRefPassesTest.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@ public function testProcess()
4343
->setPublic(true)
4444
->addTag('container.private', ['package' => 'foo/bar', 'version' => '1.42'])
4545
;
46+
$container->register('Test\soon_private_service_decorated')
47+
->setPublic(true)
48+
->addTag('container.private', ['package' => 'foo/bar', 'version' => '1.42'])
49+
;
50+
$container->register('Test\soon_private_service_decorator')
51+
->setDecoratedService('Test\soon_private_service_decorated')
52+
->setArguments(['Test\soon_private_service_decorator.inner']);
4653

4754
$container->register('Test\private_used_shared_service');
4855
$container->register('Test\private_unused_shared_service');
@@ -55,6 +62,8 @@ public function testProcess()
5562
'Test\private_used_shared_service' => new ServiceClosureArgument(new Reference('Test\private_used_shared_service')),
5663
'Test\private_used_non_shared_service' => new ServiceClosureArgument(new Reference('Test\private_used_non_shared_service')),
5764
'Test\soon_private_service' => new ServiceClosureArgument(new Reference('.container.private.Test\soon_private_service')),
65+
'Test\soon_private_service_decorator' => new ServiceClosureArgument(new Reference('.container.private.Test\soon_private_service_decorated')),
66+
'Test\soon_private_service_decorated' => new ServiceClosureArgument(new Reference('.container.private.Test\soon_private_service_decorated')),
5867
];
5968

6069
$privateServices = $container->getDefinition('test.private_services_locator')->getArgument(0);

0 commit comments

Comments
 (0)