Каков наилучший способ интеграции диспетчера событий в библиотеку PHP?
Мне нужно интегрировать диспетчер событий в мою собственную кодовую базу (пользовательскую библиотеку PHP), поэтому я посмотрел, что оба в Symfony2 и Zend Framework 2 делаете.
очевидно, что нет общего интерфейса для диспетчеризации событий, потому что обе платформы имеют разные потребности и решили реализовать свой собственный код... поэтому я немного потерян: я не хочу изобретать свое личное колесо.
вероятно, интерфейсы SPL для реализации наблюдателя шаблон немного наивен, поэтому я здесь спрашиваю вас: что бы вы сделали?
редактировать
Так как это не ясно... Я хочу повторно использовать существующий ED, позволяя разработчику внедрить его в мою библиотеку.
предположим, вы разрабатываете lib с диспетчером, и вы знаете, что ваш lib будет частью пакета Symfony, а также повторно использоваться в проектах ZF: вы наверняка хотите повторно использовать Symfony и ZF диспетчеров, а не свои собственные.
Я искал общие интерфейсы для существующих диспетчеров, реализованных в основных библиотеках, но похоже, что решения нет.4 ответов
вы можете определить интерфейс для своих нужд, а затем реализовать его с адаптерами differents для каждой платформы.
Я думаю, что ваш первый инстинкт выбрать один из широко используемых компонентов-это путь.
эти два варианта я бы тоже рассматривал. Вы должны просто взглянуть на них и выбрать тот, который вы чувствуете, будет работать лучше для вас.
бесстыдная вилка: если вы хотите что-то действительно, действительно легкий, вы можете взглянуть на Événement.
вам нужно реализовать шаблон наблюдателя, реализуя PHP-интерфейс SplObserver, SplSubject. Не только Zend , Symphony делает это для поддержки крючков, но, как правило, каждый диспетчер событий работает таким образом, реализуя шаблон наблюдателя .
вот статья, чтобы узнать больше http://devzone.zend.com/article/4284
старый пост, который уже был принят, но есть решение для падения решения EDP в PHP для тех, кто сталкивается с этим, как и я.
функциональность сильно отличается от реализации Symfony и Zend, поскольку их интерфейс или классы не нуждаются в расширении для использования библиотеки, а вы просто вызываете типичные функции php для обработки диспетчеризации событий.
// Subscribe to dispatched events
subscribe(callback, signal)
// Dispatch an event
fire(signal)