Как лучше всего интегрировать диспетчер событий в библиотеку PHP? - PullRequest
7 голосов
/ 03 октября 2011

Мне нужно интегрировать диспетчер событий в мою собственную кодовую базу (пользовательскую библиотеку PHP), поэтому я посмотрел, что делают Symfony2 и Zend Framework 2 .

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

Вероятно, интерфейсы SPL для реализации шаблона наблюдателя немного наивны, поэтому я здесь спрашиваю вас: что бы вы сделали?

РЕДАКТИРОВАТЬ

Поскольку этоне ясно ... Я хочу повторно использовать существующий ED, позволяя разработчику добавить его в мою библиотеку.

Допустим, вы разрабатываете библиотеку с диспетчером и знаете, что ваша библиотека будет частьюSymfony Bundle, а также повторно используется в проектах ZF: вы, безусловно, хотите повторно использовать диспетчеры Symfony и ZF вместо своих собственных.

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

Ответы [ 4 ]

4 голосов
/ 11 октября 2011

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

2 голосов
/ 03 октября 2011

Вам необходимо реализовать шаблон наблюдателя, реализовав PHP-интерфейс SplObserver, SplSubject. Не только Zend, Symphony делает это для поддержки хуков, но обычно каждый диспетчер событий работает таким образом, реализуя шаблон наблюдателя.

Вот статья, чтобы узнать больше http://devzone.zend.com/article/4284

2 голосов
/ 03 октября 2011

Я думаю, что ваш первый инстинкт выбора одного из широко используемых компонентов - это путь.

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

Бесстыдная вилка: если вы хотите что-то действительно очень легкое, вы можете взглянуть на Événement .

1 голос
/ 06 марта 2012

Старый пост, который уже был принят, но есть решение для отказа от EDP-решения в PHP для тех, кто сталкивается с этим, как я.сильно отличается от реализации Symfony и Zend, так как они не являются интерфейсом или классами, которые требуют расширения для использования библиотеки, скорее вы просто вызываете типичные функции php для обработки диспетчеризации событий.

...