построить систему плагинов с php - PullRequest
33 голосов
/ 20 октября 2008

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

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

У кого-нибудь есть хорошие идеи, как поступить? Если бы кто-то мог описать, как это делают некоторые из более популярных программ, это было бы идеально.

1 Ответ

35 голосов
/ 20 октября 2008
  1. Определите функциональность, к которой вы хотите подключить плагины (то есть, что они будут делать и над чем)
  2. Определяет иерархию классов, в которую помещаются плагины, как, например, все плагины статьи, наследующие статьи, должны наследоваться от ArticleMangler
  3. Определите физическое местоположение для плагинов, например / plugins
  4. Импорт всех плагинов, присутствующих в папке
  5. Используйте шаблоны Decorator или Observer , чтобы внедрить поведение плагина или уведомить плагины о возникновении событий. Стратегия может также применяться в некоторых случаях.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...