Плагин с Наблюдателем Pattern
Недавно я изучил наблюдаемую модель и понимаю, как все работает и какова концепция. Я также играл с этим в моем приложении, но я хочу выяснить, как использовать его, когда вы хотите сделать плагин в приложении php, потому что это было моей главной целью.
Я не нашел достойного примера до сих пор. Я хочу понять концепцию создания плагина с помощью наблюдаемого, а также хороший и простой пример.
Создавая плагин, я имею в виду иметь стандартное приложение и хочу сделать что-то конкретное для каждого клиента, потому что не все клиенты просят одно и то же, я не могу дать им одно и то же приложение, поэтому идеи, чтобы сделать стандарт приложение и настроить его для каждого клиента, и я понимаю, что нечто подобное вызывается для создания плагина, и это можно сделать с помощью наблюдателя.
2 ответа
Шаблон Observer/Observable подойдет, если вы хотите реализовать какие-то особые триггеры / действия, основанные на действиях пользователя или приложения / службы.
Например, служба идентификации / аутентификации может реализовывать подключаемую архитектуру, используя своего рода наблюдателя, чтобы сторонние плагины могли что-то делать, когда какой-то пользователь аутентифицируется или какой-то пользователь зарегистрирован...
Также это должно работать в пользовательском интерфейсе, потому что вы можете показать меню или добавить визуальный компонент на основе взаимодействия с пользователем.
Если вы хотите создать очень бесплатное приложение на основе плагинов, вы можете сделать немного другую версию этого.
Реализуйте централизованный контроль событий.
Каждый плагин (выступающий в качестве ваших контроллеров) регистрируется там, чтобы получать уведомления об определенных событиях.
Теперь, если вы хотите получить доступ к некоторым функциям, просто отправьте конкретное событие через этот центральный элемент управления событиями. Вам больше не нужно знать, какой плагин будет реагировать на ваше событие, вам нужно только знать интерфейс указанного события и форму ответа, которую вы получите.
Теперь несколько плагинов могут регистрироваться на события, переопределяя или расширяя результаты других плагинов. Или просто разрешить совершенно новые события.
Эта структура приложения требует немного терпения, чтобы правильно создать все необходимые классы, но конечный продукт чрезвычайно отделен -> гибкий. Думайте об этом как о форме MVC, где контроллеру (ам) не нужно знать друг друга, они просто знают, где спрашивать в очень общей форме.
(Я слышал, Zend2 пытается подобный подход?)