Как сделать плагин-подобное веб-приложение с PHP? - PullRequest
4 голосов
/ 09 августа 2011

StackOverflow!

Я ищу способ сделать похожее на плагин (я не знал, как это назвать) веб-приложение с PHP. Под этим я подразумевал, что хочу создать систему, в которой пользователь может добавлять / удалять плагины (расширения, если хотите) через браузер (не добавляя некоторый код в конфигурацию). Хороший пример - WordPress, на мой взгляд. Конечный пользователь может просто установить любые плагины и, практически ничего не делая, они работают как положено, и очень часто имеют множество настроек для изменения и т. Д.

Кроме того, я бы хотел сделать его максимально удобным для использования. При этом я имел в виду, что плагин может использовать части других плагинов, чтобы было меньше переписанного кода. Например, есть плагин для авторизации / аутентификации и все остальное, что связано с пользователями. Затем есть плагин, который предназначен для блога. Блог, конечно же, нуждается в упоминании, верно? Так что он просто использует этот плагин для работы. Я понимаю, что будет много зависимостей и так далее ... но это просто нормально. :)

У меня вопрос ... с какой техникой я могу это сделать? Каковы преимущества и недостатки такой системы? Я предполагаю, что это будет немного медленнее и не подойдет для очень больших сайтов, таких как Facebook (хорошо, это просто слишком много), но для простых блогов, портфолио, что бы это ни было хорошо!

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

Спасибо, что прочитали это. Дайте мне несколько ответов, если это возможно. : D

Ответы [ 2 ]

6 голосов
/ 09 августа 2011

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

При всех своих ошибках Wordpress имеет вполне работоспособный подход к этому.Он использует "крючки" для взаимодействия с плагинами.По сути, это система обратного вызова, которая более или менее может быть «управляемой событиями».По сути, основное приложение делает что-то вроде:

foreach ($callback["need_to_render_sidebar"] as $fn) {
    $fn();
}

Но вы можете сделать его более гибким, передавая дополнительные параметры, возвращая данные и, что более важно: используя объекты, а не процедурные обратные вызовы для более сложных функций.(Я бы посоветовал смешивать и сопоставлять. Не существует ни одного подхода, который бы подходил всем приложениям или расширениям.)

Аналогично система плагинов часто позволяет самим расширениям вызывать основное приложение,введите в него данные или измените настройки.

Вторая часть, которую вы должны рассмотреть для системы плагинов, - это то, как вы делаете ее управляемой.Там в основном каждая WebCMS / DMS имеет свой подход.Многие используют zip-файлы для извлечения вручную или каталоги модулей.Для начала наиболее подходящим является WP-подобный подход к файлам сценариев с расширенными метаданными.Я создал аналогичную систему, которую можно использовать независимо от WP, хотя она довольно грубая: http://milki.include -once.org / genericplugins / (хорошая часть на самом деле - управляемость настроек.)

2 голосов
/ 09 августа 2011

Просто простая концепция.

Вы можете использовать расширения как классы PHP и хранить их в отдельных файлах в одной (или нескольких) директории (-ies). Вы должны инициализировать расширения в основном приложении, просматривая файлы расширений и создавая объекты этих классов.

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

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