Php 如何在不停止其他订阅服务器的情况下停止任意订阅服务器?

Php 如何在不停止其他订阅服务器的情况下停止任意订阅服务器?,php,symfony,Php,Symfony,假设我有一个名为XXX的事件和两个不同的复杂订阅者,可以如下所示: class SubscriberOneXXX extends EventSubscriber { function actionWithPriority1() { ... } function actionWithPriority2() { ... } function actionWithPriority3() { ... } } 第二个: class SubscriberTwoXXX extends

假设我有一个名为XXX的事件和两个不同的复杂订阅者,可以如下所示:

class SubscriberOneXXX extends EventSubscriber {
    function actionWithPriority1() { ... }
    function actionWithPriority2() { ... }
    function actionWithPriority3() { ... }
}
第二个:

class SubscriberTwoXXX extends EventSubscriber {
    function actionWithPriority1() { ... }
    function actionWithPriority2() { ... }
    function actionWithPriority3() { ... }
}
我们可以假设这两个订户代表并行过程的不同工作流,并且是独立的


如何在
SubscriberOneXXX
中停止事件传播并跳过剩余的操作,但允许其他订阅者处理事件?

我不确定是否可以,停止传播的目标是停止事件,因此其他订阅者不会运行。您可以在订阅服务器中添加一个布尔标志,以便在需要时进行更改。并在执行逻辑之前检查标志。使自己成为子事件。SubscriberOne将只发送SubscriberOne子事件。你的三个动作将只是这个事件的侦听器,如果其中一个停止传播,那么好吧。对第二个订户重复此操作。不用说,在实现它之前,请确保您确实需要此功能。flag的想法可能是一个更好的方法。它可能是一个复杂的实现,但应该可以解决您的问题,下面是一个您也可以使用