fix waSMS Есть решение

1

Вы добавляюте хук в своем системном классе waSMS, экземпляр которого может создаваться в различных приложениях. И если экземпляр класса waSMS создается в приложении shop, а подписываемся мы на хук в этом классе в приложении "myappication" то webasyst вызывает подписчиков только из приожения shop , а нас в "myappication" не вызывают.


Решение: 

вместо 
wa()->event('sms_send.before', $params, array('to', 'text', 'from', 'result', 'adapter'));

рабочий код

foreach (array_keys(wa()->getApps()) as $appId) {
wa($appId)->event('sms_send.before', $params, array('to', 'text', 'from', 'result', 'adapter'));
}

7 комментариев

  • +1

    это ожидаемое поведение. Но у myapplication есть возможность подписаться на события другого приложения

    • +1

      откуда подписчик знает в каком приложении может быть создано и отправлено SMS? Подписчик не обязан знать какие приложения работают в системе, он подписывается на событие, а задача системы вызвать подписчиков при генерации события на которое они подписаны.  И не важно в каком месте генерируется событие

    • +1
      Аналогичным образом подписчики имеют дело с одним или несколькими классами сообщений, абстрагируясь от конкретных издателей.
      подписчиков не должны интересовать издатели, а нам предлагают подписываться на приложения с издателями. Подписчик подписывается на событие
      • +1

        Навскидку не могу придумать ситуации как это может мешать. Академическая теория стройна, не спорю. Но как это проецируется на практику? Именно на практику, а не на теоретические измышления. Вижу только один вариант: кто-то пишет псевдоприложение, вместо того чтобы сделать его плагином к требуемому приложению.

        • +1

          Это не теоретические измышления, а спецификация (шаблон проектирования) которой должны следовать разработчики чтобы не возникало коллизий. Мы выполнили требование - подписались на событие. Как разработчики системы - обеспечте вызов подписантов на событие.

          Много не требуется, тем более способ решения проблемы уже предложен.

          Добавить комментарий

          Чтобы добавить комментарий, зарегистрируйтесь или войдите