В вашей базе данных вы должны хранить таблицу модулей, которая состоит из следующего:
- 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 для чтения активных модулей из базы данных, загрузки файлов из папки и создания экземпляра класса с последующим там выполнением.
Надеюсь, это поможет.