Making cache rebuild correctly with MessageSubscriberInterface return values
This commit is contained in:
parent
c083e20cf2
commit
d88446be07
@ -13,6 +13,7 @@ namespace Symfony\Component\Config\Resource;
|
|||||||
|
|
||||||
use Symfony\Component\DependencyInjection\ServiceSubscriberInterface as LegacyServiceSubscriberInterface;
|
use Symfony\Component\DependencyInjection\ServiceSubscriberInterface as LegacyServiceSubscriberInterface;
|
||||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
use Symfony\Component\Messenger\Handler\MessageSubscriberInterface;
|
||||||
use Symfony\Contracts\Service\ServiceSubscriberInterface;
|
use Symfony\Contracts\Service\ServiceSubscriberInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -164,6 +165,13 @@ class ReflectionClassResource implements SelfCheckingResourceInterface, \Seriali
|
|||||||
yield print_r($class->name::getSubscribedEvents(), true);
|
yield print_r($class->name::getSubscribedEvents(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (interface_exists(MessageSubscriberInterface::class, false) && $class->isSubclassOf(MessageSubscriberInterface::class)) {
|
||||||
|
yield MessageSubscriberInterface::class;
|
||||||
|
foreach ($class->name::getHandledMessages() as $key => $value) {
|
||||||
|
yield $key.print_r($value, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (interface_exists(LegacyServiceSubscriberInterface::class, false) && $class->isSubclassOf(LegacyServiceSubscriberInterface::class)) {
|
if (interface_exists(LegacyServiceSubscriberInterface::class, false) && $class->isSubclassOf(LegacyServiceSubscriberInterface::class)) {
|
||||||
yield LegacyServiceSubscriberInterface::class;
|
yield LegacyServiceSubscriberInterface::class;
|
||||||
yield print_r([$class->name, 'getSubscribedServices'](), true);
|
yield print_r([$class->name, 'getSubscribedServices'](), true);
|
||||||
|
@ -15,6 +15,7 @@ use PHPUnit\Framework\TestCase;
|
|||||||
use Symfony\Component\Config\Resource\ReflectionClassResource;
|
use Symfony\Component\Config\Resource\ReflectionClassResource;
|
||||||
use Symfony\Component\DependencyInjection\ServiceSubscriberInterface;
|
use Symfony\Component\DependencyInjection\ServiceSubscriberInterface;
|
||||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
use Symfony\Component\Messenger\Handler\MessageSubscriberInterface;
|
||||||
|
|
||||||
class ReflectionClassResourceTest extends TestCase
|
class ReflectionClassResourceTest extends TestCase
|
||||||
{
|
{
|
||||||
@ -147,6 +148,24 @@ EOPHP;
|
|||||||
$this->assertTrue($res->isFresh(0));
|
$this->assertTrue($res->isFresh(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testMessageSubscriber()
|
||||||
|
{
|
||||||
|
$res = new ReflectionClassResource(new \ReflectionClass(TestMessageSubscriber::class));
|
||||||
|
$this->assertTrue($res->isFresh(0));
|
||||||
|
|
||||||
|
TestMessageSubscriberConfigHolder::$handledMessages = ['SomeMessageClass' => []];
|
||||||
|
$this->assertFalse($res->isFresh(0));
|
||||||
|
|
||||||
|
$res = new ReflectionClassResource(new \ReflectionClass(TestMessageSubscriber::class));
|
||||||
|
$this->assertTrue($res->isFresh(0));
|
||||||
|
|
||||||
|
TestMessageSubscriberConfigHolder::$handledMessages = ['OtherMessageClass' => []];
|
||||||
|
$this->assertFalse($res->isFresh(0));
|
||||||
|
|
||||||
|
$res = new ReflectionClassResource(new \ReflectionClass(TestMessageSubscriber::class));
|
||||||
|
$this->assertTrue($res->isFresh(0));
|
||||||
|
}
|
||||||
|
|
||||||
public function testServiceSubscriber()
|
public function testServiceSubscriber()
|
||||||
{
|
{
|
||||||
$res = new ReflectionClassResource(new \ReflectionClass(TestServiceSubscriber::class));
|
$res = new ReflectionClassResource(new \ReflectionClass(TestServiceSubscriber::class));
|
||||||
@ -174,6 +193,20 @@ class TestEventSubscriber implements EventSubscriberInterface
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class TestMessageSubscriber implements MessageSubscriberInterface
|
||||||
|
{
|
||||||
|
public static function getHandledMessages(): iterable
|
||||||
|
{
|
||||||
|
foreach (TestMessageSubscriberConfigHolder::$handledMessages as $key => $subscribedMessage) {
|
||||||
|
yield $key => $subscribedMessage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class TestMessageSubscriberConfigHolder
|
||||||
|
{
|
||||||
|
public static $handledMessages = [];
|
||||||
|
}
|
||||||
|
|
||||||
class TestServiceSubscriber implements ServiceSubscriberInterface
|
class TestServiceSubscriber implements ServiceSubscriberInterface
|
||||||
{
|
{
|
||||||
public static $subscribedServices = [];
|
public static $subscribedServices = [];
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
"symfony/dependency-injection": "~3.4|~4.0",
|
"symfony/dependency-injection": "~3.4|~4.0",
|
||||||
"symfony/event-dispatcher": "~3.4|~4.0",
|
"symfony/event-dispatcher": "~3.4|~4.0",
|
||||||
"symfony/finder": "~3.4|~4.0",
|
"symfony/finder": "~3.4|~4.0",
|
||||||
|
"symfony/messenger": "~4.1",
|
||||||
"symfony/yaml": "~3.4|~4.0"
|
"symfony/yaml": "~3.4|~4.0"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
|
Reference in New Issue
Block a user