Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Движок плагинов

Сообщения:  [1-9] 

 
 автор: Sergey89   (18.01.2007 в 20:51)   письмо автору
 
   для: 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();
?>

   
 
 автор: spider-x   (18.01.2007 в 20:20)   письмо автору
 
   для: 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)   письмо автору
 
   для: Sergey89   (18.01.2007 в 18:44)
 

примерчик бы, а то немогу сообразить :)

   
 
 автор: Sergey89   (18.01.2007 в 18:44)   письмо автору
 
   для: Alph[p]a   (18.01.2007 в 18:31)
 

Ну я бы тоже так сделал. + автоматическое создание ссылок на объекты.

   
 
 автор: Alph[p]a   (18.01.2007 в 18:31)   письмо автору
 
   для: Sergey89   (18.01.2007 в 18:13)
 

Я бы папку читал чё наш0л то подгружаю)

   
 
 автор: Sergey89   (18.01.2007 в 18:13)   письмо автору
 
   для: Kolobok   (18.01.2007 в 18:05)
 

Можно плагин организовать, как класс и загружать его через ядро системы, которая скажем будет хранить объекты плагинов в массиве.

   
 
 автор: Kolobok   (18.01.2007 в 18:05)   письмо автору
 
   для: Sergey89   (17.01.2007 в 23:51)
 

нет, только начинаю составлять план

   
 
 автор: Sergey89   (17.01.2007 в 23:51)   письмо автору
 
   для: Kolobok   (17.01.2007 в 23:04)
 

Сама система еще не готова?

   
 
 автор: Kolobok   (17.01.2007 в 23:04)   письмо автору
 
 

Хочу сделать у себя в cms динамическую загрузку плагинов, посоветуйте где бы про это почитать

   

Сообщения:  [1-9] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования