Делая мой код легко писать плагины для - PullRequest
1 голос
/ 27 июня 2010

Я писал код, который создает общий блог.

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

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

  1. Пусть автор плагина напишет короткий скрипт, который называется, например, "config", в котором у него есть массив, содержащий приложение (например, веб-интерфейс, администратор и т. Д.), Модуль (например, блог, профиль и т. Д.) И действие ( s) (например, создать, редактировать и т. д.), на который влияет их плагин, а затем включить файлы плагинов при выполнении правильного действия.

    //example array in config.php:
    array(
      'application' => 'admin',
      'module'      => 'blog',
      'action'      => array('create','edit')
    );
    
  2. добавить строки в код представлений, такие как "{form-extras}", и попросить автора плагина сказать, какая строка в этом коде будет заменена. Затем используйте str_replace, чтобы заменить {xxx} на код плагина.

    #example code in blog_form.php
    <input type="text" name="blog_title" />
    <input type="text" name="blog_text" />
    {form-extras}
    
    #example code in plugins config.php
    array(
      'replace' => array('form-extras')
    );
    

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

Я не уверен, сколько информации о моем коде нужно людям, но основная структура dir проста, ниже приведен пример:

apps //applications
  frontend  //app name
    modules
      blog
        views
          index.php  //list blogs
          new.php //create new blog post
        actions.class.php
  admin
    modules
      blog
        views
          index.php  //list blogs
          new.php //create new blog post
        actions.class.php
lib //library of classes like database class
plugins //where plugins will hopefully be installed
web //where the site runs e.g index.php, all the css and js

Вопрос

Кто-нибудь знает какие-либо учебные пособия / статьи по упрощению написания кода для плагинов, или у кого-нибудь есть проверенные методы, которые я мог бы применить?

С уважением

Люк

Ответы [ 2 ]

4 голосов
/ 27 июня 2010

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

Затем взгляните на Drupal, я думаю, что его модульная система, основанная на хуках, действительно мощная и «простая» для разработчиков.

По сути, идея заключается в том, что когда установлен модуль или плагин, все, что вы делаете с вашим «основным» кодом, ищет, есть ли какие-либо модули / плагины, подключенные к этому действию.1010 *

Это очень очень синтетический пример (и он не работает!), Но он должен дать вам идею.

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

Некоторые ссылки: крючки Drupal , hook_insert

2 голосов
/ 27 июня 2010

То, что вы ищете, это пример и / или информация о архитектуре плагина . Использование этого термина и Google покажет много ресурсов.

Изучите, как это достигается в существующих установленных приложениях, таких как WordPress, Drupal или Joomla.

Рассмотрим также этот существующий вопрос: Архитектура плагинов в PHP

...