|
|
|
| Хочу сделать у себя в cms динамическую загрузку плагинов, посоветуйте где бы про это почитать | |
|
|
|
|
|
|
|
для: Kolobok
(17.01.2007 в 23:04)
| | Сама система еще не готова? | |
|
|
|
|
|
|
|
для: Sergey89
(17.01.2007 в 23:51)
| | нет, только начинаю составлять план | |
|
|
|
|
|
|
|
для: Kolobok
(18.01.2007 в 18:05)
| | Можно плагин организовать, как класс и загружать его через ядро системы, которая скажем будет хранить объекты плагинов в массиве. | |
|
|
|
|
|
|
|
для: Sergey89
(18.01.2007 в 18:13)
| | Я бы папку читал чё наш0л то подгружаю) | |
|
|
|
|
|
|
|
для: Alph[p]a
(18.01.2007 в 18:31)
| | Ну я бы тоже так сделал. + автоматическое создание ссылок на объекты. | |
|
|
|
|
|
|
|
для: Sergey89
(18.01.2007 в 18:44)
| | примерчик бы, а то немогу сообразить :) | |
|
|
|
|
|
|
|
для: Kolobok
(18.01.2007 в 19:42)
| | Ну я делал вот так )
у меня есть папка с модулями ...(modules)
в этой папке файлы модулей *.php я подключаю модули а потом с помощью шаблонизатора вставляю контент из модулей в нужные места сайта)
подключаются только *.php ... если нужно все то убери проверку)
<?php
$dir=opendir('./modules/'); //открываем директорию
while($file=readdir($dir)){ //читаем файлы модулей пока не закончатся
if($file=='.' or $file=='..'){continue;} //не читать ../ , ./ директории
$file=strrev($file);//Переворачиваем название файла
list($php) = explode(".", $file);//Узнаём расширение
$file=strrev($file);//Переворачиваем название файла обратно
if($php=='php'){include("./modules/".$file."");}//если *.php то подключаем модуль
}
closedir ($dir);
?>
|
| |
|
|
|
|
|
|
|
для: Kolobok
(18.01.2007 в 19:42)
| | plugins/plugin_1.php:
<?php
class Plugin_1 {
// свойтсва и методы класса
public function Test() {
print 'Это плагин 1!';
}
}
$plugin_1 = new Plugin_1();
?>
|
plugins/plugin_2.php:
<?php
class Plugin_2 {
// свойтсва и методы класса
public function Test() {
print 'Это плагин 2!';
}
}
$plugin_2 = new Plugin_2();
?>
|
Загрузчик плагинов:
<?php
class Plugin_Loader {
private $plugins = array();
public function Load($plug_name) {
$plug_name = strtolower($plug_name);
include 'plugins/'.$plug_name.'.php';
$this->plugins[$plug_name] = $$plug_name;
}
public function Get($plug_name) {
return $this->plugins[$plug_name];
}
}
?>
|
Пример:
<?php
$plugin_loader = new Plugin_Loader();
$plugin_loader->Load('plugin_1');
$plugin_loader->Load('plugin_2');
$plugin_1 = $plugin_loader->Get('plugin_1');
$plugin_2 = $plugin_loader->Get('plugin_2');
$plugin_1->Test();
$plugin_2->Test();
?>
|
| |
|
|
|