8000 Making cache rebuild correctly with MessageSubscriberInterface return… · symfony/symfony@d88446b · GitHub
[go: up one dir, main page]

Skip to content

Commit d88446b

Browse files
committed
Making cache rebuild correctly with MessageSubscriberInterface return values
1 parent c083e20 commit d88446b

File tree

3 files changed

+42
-0
lines changed

3 files changed

+42
-0
lines changed

src/Symfony/Component/Config/Resource/ReflectionClassResource.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use Symfony\Component\DependencyInjection\ServiceSubscriberInterface as LegacyServiceSubscriberInterface;
1515
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
16+
use Symfony\Component\Messenger\Handler\MessageSubscriberInterface;
1617
use Symfony\Contracts\Service\ServiceSubscriberInterface;
1718

1819
/**
@@ -164,6 +165,13 @@ private function generateSignature(\ReflectionClass $class)
164165
yield print_r($class->name::getSubscribedEvents(), true);
165166
}
166167

168+
if (interface_exists(MessageSubscriberInterface::class, false) && $class->isSubclassOf(MessageSubscriberInterface::class)) {
169+
yield MessageSubscriberInterface::class;
170+
foreach ($class->name::getHandledMessages() as $key => $value) {
171+
yield $key.print_r($value, true);
172+
}
173+
}
174+
167175
if (interface_exists(LegacyServiceSubscriberInterface::class, false) && $class->isSubclassOf(LegacyServiceSubscriberInterface::class)) {
168176
yield LegacyServiceSubscriberInterface::class;
169177
yield print_r([$class->name, 'getSubscribedServices'](), true);

src/Symfony/Component/Config/Tests/Resource/ReflectionClassResourceTest.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Component\Config\Resource\ReflectionClassResource;
1616
use Symfony\Component\DependencyInjection\ServiceSubscriberInterface;
1717
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
18+
use Symfony\Component\Messenger\Handler\MessageSubscriberInterface;
1819

1920
class ReflectionClassResourceTest extends TestCase
2021
{
@@ -147,6 +148,24 @@ public function testEventSubscriber()
147148
$this->assertTrue($res->isFresh(0));
148149
}
149150

151+
public function testMessageSubscriber()
152+
{
153+
$res = new ReflectionClassResource(new \ReflectionClass(TestMessageSubscriber::class));
154+
$this->assertTrue($res->isFresh(0));
155+
156+
TestMessageSubscriberConfigHolder::$handledMessages = ['SomeMessageClass' => []];
157+
$this->assertFalse($res->isFresh(0));
158+
159+
$res = new ReflectionClassResource(new \ReflectionClass(TestMessageSubscriber::class));
160+
$this->assertTrue($res->isFresh(0));
161+
162+
TestMessageSubscriberConfigHolder::$handledMessages = ['OtherMessageClass' => []];
163+
$this->assertFalse($res->isFresh(0));
164+
165+
$res = new ReflectionClassResource(new \ReflectionClass(TestMessageSubscriber::class));
166+
$this->assertTrue($res->isFresh(0));
167+
}
168+
150169
public function testServiceSubscriber()
151170
{
152171
$res = new ReflectionClassResource(new \ReflectionClass(TestServiceSubscriber::class));
@@ -174,6 +193,20 @@ public static function getSubscribedEvents()
174193
}
175194
}
176195

196+
class TestMessageSubscriber implements MessageSubscriberInterface
197+
{
198+
public static function getHandledMessages(): iterable
199+
{
200+
foreach (TestMessageSubscriberConfigHolder::$handledMessages as $key => $subscribedMessage) {
201+
yield $key => $subscribedMessage;
202+
}
203+
}
204+
}
205+
class TestMessageSubscriberConfigHolder
206+
{
207+
public static $handledMessages = [];
208+
}
209+
177210
class TestServiceSubscriber implements ServiceSubscriberInterface
178211
{
179212
public static $subscribedServices = [];

src/Symfony/Component/Config/composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24 5E62 ,6 +24,7 @@
2424
"symfony/dependency-injection": "~3.4|~4.0",
2525
"symfony/event-dispatcher": "~3.4|~4.0",
2626
"symfony/finder": "~3.4|~4.0",
27+
"symfony/messenger": "~4.1",
2728
"symfony/yaml": "~3.4|~4.0"
2829
},
2930
"conflict": {

0 commit comments

Comments
 (0)
0