За последние 24 часа нас посетили 20742 программиста и 1106 роботов. Сейчас ищут 390 программистов ...

Подскажите кейсы, где оправдано юзать события и слушатели

Тема в разделе "Laravel", создана пользователем Сереганек, 5 апр 2020.

Метки:
  1. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Разобрался с темой КАК юзать события и слушатели в Ларавель. Но не хватает понимания где их использовать целесообразно, а где оверхед. Ну например, я сохраняю новую статью в бд. Данные попали в контроллер. Можно в принципе весь код по сохранению статьи перенести в листенеры, а можно в листенерах только прописать логирование. С другой стороны логирование - это всего одна строчка кода - как по мне нелогично городить ивенты и слушатели ради одной строчки логирования.

    В общем хотелось бы услышать где вы используете слушатели - какие-то практические примеры, чтобы на практике их использовать более разумно.
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Сегодня - одна, завтра может быть много.

    Весь код сохранения статьи переносить в ивенты не логично, а вот какое-нибудь обновление счётчика, уведомление про новую статью и т.п. - вполне себе.
     
    Сереганек нравится это.
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    Извещения по подписке. Ты в событии можешь известить подписанных пользователей через пуш бродкаст или письмом о новой статье или о коментарии к статье, которую они в закладки поместили.
     
    Сереганек нравится это.
  4. ElisDN

    ElisDN Активный пользователь

    С нами с:
    13 фев 2018
    Сообщения:
    605
    Симпатии:
    130
    Подписчики для системных событий обычно делают чтобы влезть внутрь фреймворка.

    А на своих событиях обычно делается любая инфраструктурная рутина:
    • Логирование изменений или действий
    • Уведомления на почту и т.п.
    • Очистка кэша (например, по тегу)
    • Синхронизация других хранилищ вроде ElasticSearch
    В более продвинутом случае на событиях и командах строится взаимодействие модулей в распределённых системах.
     
    Сереганек нравится это.