Как структурировать модули PHP? - PullRequest
1 голос
/ 26 декабря 2010

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

Как я могу структурироватьэто и реализовать эти модули в PHP CMS?

1 Ответ

3 голосов
/ 26 декабря 2010

В вашей базе данных вы должны хранить таблицу модулей, которая состоит из следующего:

  • ID
  • module_name
  • module_desc
  • module_folder
  • module_active

, чтобы вы могли сохранять организованные модули, в таблице, где у вас есть module_folder, это должно быть расположение модуля, например

cms_root() . "/modules/%module_folder%/main.module.php"

Вот где бы пригодились интерфейсы:)

interface IModule
{
    public function __run($param);
    public function __version();
    public function __shutdown();
    //...
}

у вас также должен быть класс с именем Module, где модуль будет расширяться и собирать права на шаблоны / базы данных и т. Д.

class Module
{
    public $DB,$TPL; /*...*/

     /*
         Functions ehre to help the module gain access to the instance of the page.
     */
}

Также класс Module должен иметь возможность выполнять модули и отслеживать выполненные модули, поэтому в коде вашего ядра вы можете сказать $Module->RunAll(), и он будет запускать их.

Файл модуля, вероятно, будет выглядеть так:

class Gallery_Module extends Module implements IModule
{
    public function __version()
    {
         return '1.0';
    }

    public function __run()
    {
         //Assign module data to the template :)
    }

    public function __shutdown()
    {
         //Clean old records etc from DB
    }
}

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

Надеюсь, это поможет.

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