создать систему плагинов с php

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

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

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


person Eric Lamb    schedule 20.10.2008    source источник
comment
Можете ли вы поделиться своим мнением по этому вопросу? Прошло много времени с тех пор, как вы задавали этот вопрос, и мне интересно узнать, какие наиболее важные аспекты вы узнали из собственного опыта написания пользовательских CMS на php.   -  person Adrian Moisa    schedule 15.01.2016
comment
@AdrianMoisa Но я не ОП, думаю, стоит прокомментировать, что написание вашей CMS - довольно простая и понятная вещь - если вы просто попытаетесь сделать это, шаг за шагом. Чтение книг или руководств по этому вопросу может сбить с толку больше, чем помочь. (Однако всегда полезно читать хорошие документы, такие как php.net). Еще я узнал: использовать ООП (возможно, с автозагрузчиком Composer). Классы похожи на коробки, в которых ОБЯЗАТЕЛЬНО нужно все рассортировать. Опять же, чтение с помощью ООП может повредить ваш мозг, поэтому делайте это естественным образом, а не так, как говорят эти фанатики Java. Нечего добавить: простой PDO, сеансы, редактор JS ...   -  person chang zhao    schedule 13.10.2018


Ответы (1)


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

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

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

person Vinko Vrsalovic    schedule 20.10.2008
comment
Для заинтересованных лиц вот список наиболее часто используемых шаблонов проектирования. - person tleb; 12.09.2015