Как можно остановить произвольного подписчика, не останавливая других?

Предположим, у меня есть событие под названием XXX и два разных сложных подписчика, которые могут выглядеть так:

class SubscriberOneXXX extends EventSubscriber {
    function actionWithPriority1() { ... }
    function actionWithPriority2() { ... }
    function actionWithPriority3() { ... }
}

И второй:

class SubscriberTwoXXX extends EventSubscriber {
    function actionWithPriority1() { ... }
    function actionWithPriority2() { ... }
    function actionWithPriority3() { ... }
}

Можно предположить, что эти два подписчика представляют разные рабочие процессы параллельных процессов и независимы.

Как я могу остановить распространение события в SubscriberOneXXX и пропустить оставшиеся действия, но разрешить другим подписчикам обрабатывать событие?

Я не уверен, что вы можете, цель распространения остановки - остановить событие, чтобы другие подписчики не запускались. Вы можете добавить в подписчика логический флаг, который вы можете изменить, когда захотите. И проверьте флаг перед выполнением вашей логики.

Mcsky 24.05.2018 12:19

Сделайте себе под-событие. SubscriberOne просто отправит подписку SubscriberOne. Ваши действия s1 three будут просто слушателями этого события, и если одно из них прекратит распространение, то да ладно. Повторите для вашего второго подписчика. Излишне говорить, что перед реализацией этой функции убедитесь, что она вам действительно нужна. Идея флага, вероятно, лучший подход.

Cerad 24.05.2018 15:09

Это будет сложная реализация, но семафоры должен решить вашу проблему, вот объяснение, также вы можете использовать компонент блокировки symfony

Juan I. Morales Pestana 25.05.2018 14:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
38
0

Другие вопросы по теме