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

Skip to content

Commit 4a6226d

Browse files
committed
[DependencyInjection] remove ServiceSubscriberTrait deprecation layer
1 parent ed4480d commit 4a6226d

File tree

6 files changed

+17
-204
lines changed

6 files changed

+17
-204
lines changed

src/Symfony/Component/DependencyInjection/Tests/Compiler/RegisterServiceSubscribersPassTest.php

Lines changed: 0 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@
2424
use Symfony\Component\DependencyInjection\Reference;
2525
use Symfony\Component\DependencyInjection\ServiceLocator;
2626
use Symfony\Component\DependencyInjection\Tests\Fixtures\CustomDefinition;
27-
use Symfony\Component\DependencyInjection\Tests\Fixtures\LegacyTestServiceSubscriberChild;
28-
use Symfony\Component\DependencyInjection\Tests\Fixtures\LegacyTestServiceSubscriberParent;
2927
use Symfony\Component\DependencyInjection\Tests\Fixtures\TestDefinition1;
3028
use Symfony\Component\DependencyInjection\Tests\Fixtures\TestDefinition2;
3129
use Symfony\Component\DependencyInjection\Tests\Fixtures\TestDefinition3;
@@ -146,67 +144,6 @@ public function testExtraServiceSubscriber()
146144
$container->compile();
147145
}
148146

149-
/**
150-
* @group legacy
151-
*/
152-
public function testServiceSubscriberTrait()
153-
{
154-
$container = new ContainerBuilder();
155-
156-
$container->register('foo', LegacyTestServiceSubscriberChild::class)
157-
->addMethodCall('setContainer', [new Reference(PsrContainerInterface::class)])
158-
->addTag('container.service_subscriber')
159-
;
160-
161-
(new RegisterServiceSubscribersPass())->process($container);
162-
(new ResolveServiceSubscribersPass())->process($container);
163-
164-
$foo = $container->getDefinition('foo');
165-
$locator = $container->getDefinition((string) $foo->getMethodCalls()[0][1][0]);
166-
167-
$expected = [
168-
LegacyTestServiceSubscriberChild::class.'::invalidDefinition' => new ServiceClosureArgument(new TypedReference('Symfony\Component\DependencyInjection\Tests\Fixtures\InvalidDefinition', 'Symfony\Component\DependencyInjection\Tests\Fixtures\InvalidDefinition', ContainerInterface::IGNORE_ON_INVALID_REFERENCE)),
169-
LegacyTestServiceSubscriberChild::class.'::testDefinition2' => new ServiceClosureArgument(new TypedReference(TestDefinition2::class, TestDefinition2::class, ContainerInterface::IGNORE_ON_INVALID_REFERENCE)),
170-
LegacyTestServiceSubscriberChild::class.'::testDefinition3' => new ServiceClosureArgument(new TypedReference(TestDefinition3::class, TestDefinition3::class, ContainerInterface::IGNORE_ON_INVALID_REFERENCE)),
171-
LegacyTestServiceSubscriberParent::class.'::testDefinition1' => new ServiceClosureArgument(new TypedReference(TestDefinition1::class, TestDefinition1::class, ContainerInterface::IGNORE_ON_INVALID_REFERENCE)),
172-
];
173-
174-
$this->assertEquals($expected, $container->getDefinition((string) $locator->getFactory()[0])->getArgument(0));
175-
}
176-
177-
/**
178-
* @group legacy
179-
*/
180-
public function testServiceSubscriberTraitWithGetter()
181-
{
182-
$container = new ContainerBuilder();
183-
184-
$subscriber = new class() implements ServiceSubscriberInterface {
185-
use ServiceSubscriberTrait;
186-
187-
public function getFoo(): \stdClass
188-
{
189-
}
190-
};
191-
$container->register('foo', \get_class($subscriber))
192-
->addMethodCall('setContainer', [new Reference(PsrContainerInterface::class)])
193-
->addTag('container.service_subscriber');
194-
195-
(new RegisterServiceSubscribersPass())->process($container);
196-
(new ResolveServiceSubscribersPass())->process($container);
197-
198-
$foo = $container->getDefinition('foo');
199-
$locator = $container->getDefinition((string) $foo->getMethodCalls()[0][1][0]);
200-
201-
$expected = [
202-
\get_class($subscriber).'::getFoo' => new ServiceClosureArgument(new TypedReference('stdClass', 'stdClass', ContainerInterface::IGNORE_ON_INVALID_REFERENCE, 'foo')),
203-
];
204-
$this->assertEquals($expected, $container->getDefinition((string) $locator->getFactory()[0])->getArgument(0));
205-
}
206-
207-
/**
208-
* @requires PHP 8
209-
*/
210147
public function testServiceSubscriberTraitWithSubscribedServiceAttribute()
211148
{
212149
if (!class_exists(SubscribedService::class)) {
@@ -237,9 +174,6 @@ public function testServiceSubscriberTraitWithSubscribedServiceAttribute()
237174
$this->assertEquals($expected, $container->getDefinition((string) $locator->getFactory()[0])->getArgument(0));
238175
}
239176

240-
/**
241-
* @requires PHP 8
242-
*/
243177
public function testServiceSubscriberTraitWithSubscribedServiceAttributeOnStaticMethod()
244178
{
245179
if (!class_exists(SubscribedService::class)) {
@@ -260,9 +194,6 @@ public static function method(): TestDefinition1
260194
$subscriber::getSubscribedServices();
261195
}
262196

263-
/**
264-
* @requires PHP 8
265-
*/
266197
public function testServiceSubscriberTraitWithSubscribedServiceAttributeOnMethodWithRequiredParameters()
267198
{
268199
if (!class_exists(SubscribedService::class)) {
@@ -283,9 +214,6 @@ public function method($param1, $param2 = null): TestDefinition1
283214
$subscriber::getSubscribedServices();
284215
}
285216

286-
/**
287-
* @requires PHP 8
288-
*/
289217
public function testServiceSubscriberTraitWithSubscribedServiceAttributeOnMethodMissingReturnType()
290218
{
291219
if (!class_exists(SubscribedService::class)) {

src/Symfony/Component/DependencyInjection/Tests/Fixtures/LegacyTestServiceSubscriberChild.php

Lines changed: 0 additions & 29 deletions
This file was deleted.

src/Symfony/Component/DependencyInjection/Tests/Fixtures/LegacyTestServiceSubscriberParent.php

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/Symfony/Component/DependencyInjection/Tests/Fixtures/LegacyTestServiceSubscriberTrait.php

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/Symfony/Contracts/Service/ServiceSubscriberTrait.php

Lines changed: 17 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -37,61 +37,31 @@ public static function getSubscribedServices(): array
3737
}
3838

3939
$services = \is_callable(['parent', __FUNCTION__]) ? parent::getSubscribedServices() : [];
40-
$attributeOptIn = false;
4140

42-
if (\PHP_VERSION_ID >= 80000) {
43-
foreach ((new \ReflectionClass(self::class))->getMethods() as $method) {
44-
if (self::class !== $method->getDeclaringClass()->name) {
45-
continue;
46-
}
47-
48-
if (!$attribute = $method->getAttributes(SubscribedService::class)[0] ?? null) {
49-
continue;
50-
}
51-
52-
if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) {
53-
throw new \LogicException(sprintf('Cannot use "%s" on method "%s::%s()" (can only be used on non-static, non-abstract methods with no parameters).', SubscribedService::class, self::class, $method->name));
54-
}
55-
56-
if (!$returnType = $method->getReturnType()) {
57-
throw new \LogicException(sprintf('Cannot use "%s" on methods without a return type in "%s::%s()".', SubscribedService::class, $method->name, self::class));
58-
}
59-
60-
$serviceId = $returnType instanceof \ReflectionNamedType ? $returnType->getName() : (string) $returnType;
61-
62-
if ($returnType->allowsNull()) {
63-
$serviceId = '?'.$serviceId;
64-
}
65-
66-
$services[$attribute->newInstance()->key ?? self::class.'::'.$method->name] = $serviceId;
67-
$attributeOptIn = true;
41+
foreach ((new \ReflectionClass(self::class))->getMethods() as $method) {
42+
if (self::class !== $method->getDeclaringClass()->name) {
43+
continue;
6844
}
69-
}
70-
71-
if (!$attributeOptIn) {
72-
foreach ((new \ReflectionClass(self::class))->getMethods() as $method) {
73-
if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) {
74-
continue;
75-
}
7645

77-
if (self::class !== $method->getDeclaringClass()->name) {
78-
continue;
79-
}
46+
if (!$attribute = $method->getAttributes(SubscribedService::class)[0] ?? null) {
47+
continue;
48+
}
8049

81-
if (!$returnType = $method->getReturnType()) {
82-
continue;
83-
}
50+
if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) {
51+
throw new \LogicException(sprintf('Cannot use "%s" on method "%s::%s()" (can only be used on non-static, non-abstract methods with no parameters).', SubscribedService::class, self::class, $method->name));
52+
}
8453

85-
if ($returnType->isBuiltin()) {
86-
continue;
87-
}
54+
if (!$returnType = $method->getReturnType()) {
55+
throw new \LogicException(sprintf('Cannot use "%s" on methods without a return type in "%s::%s()".', SubscribedService::class, $method->name, self::class));
56+
}
8857

89-
if (\PHP_VERSION_ID >= 80000) {
90-
trigger_deprecation('symfony/service-contracts', '2.5', 'Using "%s" in "%s" without using the "%s" attribute on any method is deprecated.', ServiceSubscriberTrait::class, self::class, SubscribedService::class);
91-
}
58+
$serviceId = $returnType instanceof \ReflectionNamedType ? $returnType->getName() : (string) $returnType;
9259

93-
$services[self::class.'::'.$method->name] = '?'.($returnType instanceof \ReflectionNamedType ? $returnType->getName() : $returnType);
60+
if ($returnType->allowsNull()) {
61+
$serviceId = '?'.$serviceId;
9462
}
63+
64+
$services[$attribute->newInstance()->key ?? self::class.'::'.$method->name] = $serviceId;
9565
}
9666

9767
return $services;

src/Symfony/Contracts/Tests/Service/ServiceSubscriberTraitTest.php

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,6 @@
2222

2323
class ServiceSubscriberTraitTest extends TestCase
2424
{
25-
/**
26-
* @group legacy
27-
*/
28-
public function testLegacyMethodsOnParentsAndChildrenAreIgnoredInGetSubscribedServices()
29-
{
30-
$expected = [LegacyTestService::class.'::aService' => '?'.Service2::class];
31-
32-
$this->assertEquals($expected, LegacyChildTestService::getSubscribedServices());
33-
}
34-
35-
/**
36-
* @requires PHP 8
37-
*/
3825
public function testMethodsOnParentsAndChildrenAreIgnoredInGetSubscribedServices()
3926
{
4027
$expected = [
@@ -67,22 +54,6 @@ public function setContainer(ContainerInterface $container)
6754
}
6855
}
6956

70-
class LegacyTestService extends ParentTestService implements ServiceSubscriberInterface
71-
{
72-
use ServiceSubscriberTrait;
73-
74-
public function aService(): Service2
75-
{
76-
}
77-
}
78-
79-
class LegacyChildTestService extends LegacyTestService
80-
{
81-
public function aChildService(): Service3
82-
{
83-
}
84-
}
85-
8657
class TestService extends ParentTestService implements ServiceSubscriberInterface
8758
{
8859
use ServiceSubscriberTrait;

0 commit comments

Comments
 (0)