Как создать приложение с поддержкой плагинов?
Я создал несколько программ, но большинство из них основаны на подходе "спагетти". Все функции вместе, и если я хочу добавить новую функцию, я должен добавить ее в основные файлы.
Обратите внимание: я не спрашиваю о разделении дизайна и логики.
Язык PHP.
Я спрашиваю о том, какие подходы (и как их достичь) используются в системах управления контентом, позволяя расширять приложение другими пользователями (плагинами, компонентами или расширениями).
Это просто вопрос шаблона дизайна? Или файловые структуры? или что?
1 ответ
Прежде всего вы должны принять решение о местах для поведения плагина в вашей программной архитектуре. Затем вы должны определить интерфейс для этих плагинов. После этого вам нужно построить интерфейс для регистрации плагинов.
Interceptor Pattern - ваш друг для запуска зарегистрированных плагинов в любом месте вашего приложения.
Вы должны определить стратегию приоритетов выполнения плагинов в очереди. Стратегии могут быть FIFO (FirstInFirstOut) или разрешать определенный пользователем порядок.
Кроме того, вы должны определить стратегию обработки ошибок и исключений, генерируемых любым плагином для обеспечения работающей системы.
Это представляет собой лишь приблизительную концепцию, но содержит основные элементы для плагина-приложения.
Хорошим примером в PHP для легкого доступа может быть ZendFramework1. Он использует простой плагин брокер для процесса отправки в FrontController. Как это работает, хорошо описано здесь и хорошо проиллюстрировано здесь. Но вы должны знать, что существуют лучшие подходы, например, аспектно-ориентированное программирование ( AOP). AOP в PHP доступен с помощью событийно-управляемого программирования ( EDP) или с помощью внешних пакетов, таких как AOP-PHP.