PHP: Я смешиваю программирование на основе событий с интерфейсами, учитывающими сигналы (Сигнал и Слоты / Шаблон наблюдателя)?

Я видел много людей, которые говорили, что Symfony2, Zend Framework 2 и другие основаны на событиях.

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

Поскольку PHP-приложения не имеют состояния, нет способа сделать это. И.Е. Привязка наблюдателей к виду, наблюдающему за изменениями, пока пользователь использует интерфейс. Вместо этого ему нужен новый процесс запроса для обновления представления. Так,it's not an event but a whole new request.

С другой стороны, существует аналогичная концепция: управляемая событиями архитектура.

Здесь вы можете прочитать оба:

http://en.wikipedia.org/wiki/Event-driven_programming

http://en.wikipedia.org/wiki/Event-driven_architecture

А вот другой:

http://en.wikipedia.org/wiki/Signal_programming

A signal is a notification to a process that an event occurred. Signals are sometimes described as software interrupts. Signals are analogous to hardware interrupts in that they interrupt the normal flow of execution of a program; in most cases, it is not possible to predict exactly when a signal will arrive.

Stackoverflow [singals] tag description

Более того, то, что я использовал для управления событиями, кажется, больше связано с паттерном сигналов и слотов, представленным Qt (реализация паттерна наблюдателя).

В качестве примера, существует платформа Prado, которая претендует на управление событиями:

http://www.pradosoft.com/demos/quickstart/?page=Fundamentals.Applications (Раздел «Жизненные циклы приложений»)

http://www.pradosoft.com/docs/manual/System/TApplication.html#methodonEndRequest

IIRC, это не приложение, управляемое событиями, а просто подключаемые хуки (сигналы и слоты), используемые классами, которые реализуютobservable Interface, Я имею в виду, рассматривая то, как настольные приложения используют события и как приложения без состояния используют события (в качестве подключаемых модулей): первые используют события для всего приложения, включая представления, последние только для операций на стороне сервера.

Один из них больше относится к аспектно-ориентированному программированию (с сигналами и слотами), а другой не связан конкретно сcross-cutting concerns/ АОП. Другими словами, это больше связано с состоянием приложения.

Итак, какова на самом деле связь между этими терминами и чем они отличаются друг от друга?

Event-driven programming Event-driven architecture Signals and Slots Pattern

Являются ли эти термины просто общими шаблонами? Следовательно, все, что реализует паттерн наблюдателя, можно считать управляемым событиями?

UPDATE

Zend Framework 2

The article about AOP I've linked above ( http://mwop.net/blog/251-Aspects,-Filters,-and-Signals,-Oh,-My!.html ) was written by Matthew Weier O'Phinney (ZF Leader). IIRC, it doesn't have mentions about "event-driven", just signal and slots.

Symfony 2

The Symfony2 EventDispatcher component description doesn't have mentions about being for "event-driven" applications: http://symfony.com/doc/current/components/event_dispatcher/introduction.html It only contains references to "Events" (which, indeed, are handled by Signal and Slots).

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

Ответы на вопрос(2)

Ваш ответ на вопрос