Рассуждение: Подключение модулей на лету

qfewfwefewfef3414123

Участник
Сообщения
94
Реакции
17
встала надобность реализовать систему подклюбчения веб плагинов на лету.
Тоесть закачал, кликнул в админке включить, и живи радуйся.

Вчера попробовал написать, получилось примерно так:
Скрипт собираем в массив scandir папки с плагинами, записывает в базу
Из админки в базе помечаем что он включен

Дальше у каждого плагина есть константа URL, и при попытке обратиться к index.php?url=%const url plugin% у сего плагина выполняется метод renderPlugin, который сразу отрисовывает контент страницы.

Собстна можно примерно так же и отдельные модули для блоков отрисовывать, но сейчас не об этом.

Какие подводные камни вы в таком подходе видите, и что можно продумать подругому?



Данная система будет в моем открытом для всех проекте который похоже будет называться SGE (инициалы пока не раскрою) :)
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
SGE - Source Game E*** ?
Только я что-то не совсем понял, какие плагины, какой движок? Движок свой? В таком случае что подразумевается под веб-плагинами? Ты имееь ввиду модули/блоки в стиле друпала/...? Или что?
 

qfewfwefewfef3414123

Участник
Сообщения
94
Реакции
17
SGE - Source Game E*** ?
Только я что-то не совсем понял, какие плагины, какой движок? Движок свой? В таком случае что подразумевается под веб-плагинами? Ты имееь ввиду модули/блоки в стиле друпала/...? Или что?

Движок свой, веб плагины - да, в стиле "Друпала" и других модуле-поддерживающих систем. только все это будет Гибко ориентировано на игровые сервера. От разработчика плагина будет требоваться забить несколько констант, и написать код используя классы движка (обращения к базе и к игровым серверам).

Я хочу ещё как у вордпресса, загрузку модулей сделать с сайта, что будет весьма удобно скорее всего :)

Я гдето писал тут про функционал чисто если для Соурс движка рассматривать.
SGE пока что просто кодовое название, нормально сформируется к концу разработки


Могу вечером код скинуть часов после 7, каркас подключателя плагинов, там строчек 15 всего :)
 

onotole.myarena.ru

Участник
Сообщения
42
Реакции
33
Папку плагина в архив, в менеджере плагинов выбор файла. После загрузки распаковываем архив и прописываем плагин в базу
 

TF Studio

Участник
Сообщения
227
Реакции
207
зачем велосипеды изобретать?
поковыряй фреймворки.
zend, yii - много интересного можно найти там.
+ mvc модель заюзать
Оффтоп
Контролеры с этим лучше справятся.
 

qfewfwefewfef3414123

Участник
Сообщения
94
Реакции
17
зачем велосипеды изобретать?
поковыряй фреймворки.
zend, yii - много интересного можно найти там.
+ mvc модель заюзать
Оффтоп
Контролеры с этим лучше справятся.

MVC и так будет юзаться, я ж не делитант какой. Я буду копаться в другом фреймворке. Немного попроще. Ибо нагромаждать кучу ненужной хероты не хочу. Простой функциональный код, с ООП и MVC будет, а вот вам как обещал кусок подключалки модулей, чисто каркас, в фаиле плагина будут методы renderPlugin() renderBlock()
и константа url пока что

C-подобный:
<?php
//Брать этот массив из базы, в которую админкой будут разрешены плагины вручную
$plugins = array_slice(scandir('plugins'),2);

foreach($plugins as $plugin){

    //Тут можно удалить строку, ведь у нас будет автолоадер
    include 'plugins/'.$plugin.'/'.$plugin.'.php';
unset($plug);
$plug=new $plugin;

    if(isset($_GET['url']) and $_GET['url']==$plug::url){
        $plug->renderPlugin();
    }


    //Пример с подключения для рендеринга блоков
    //К массиву при скандире можно ещё цеплять позицию блока (лево, право, верх, низ), для кастомизации положения
    //и исходя из этого выставлять условия для рендера

    //шаблон определенного блока начало
   echo !is_null($plug->renderBlock());
    //конец шаблона блока

}

//А при рендерингде блоков в шаблоне или гдето, вызывать от всех плагинов, если у них есть метод, renderBlockName();
//Таким образом при загрузке страницы, каждый важный блок запросит все измнения

Добавлено через 3 минуты
Папку плагина в архив, в менеджере плагинов выбор файла. После загрузки распаковываем архив и прописываем плагин в базу

По поводу загрузки архивов есть противоречия, скрипты не на всех хостингах смогут распаковать архив. Я думаю получать Список фаилов с сервера, для модуля, и скачивать содержание фаилов, затем сохраняя по папкам.
 
Последнее редактирование:

TF Studio

Участник
Сообщения
227
Реакции
207
Зачем придумывать какие-то методы...
заюзай YII
проще не куда.
как попробуешь - сразу понравится.
 

qfewfwefewfef3414123

Участник
Сообщения
94
Реакции
17
Зачем придумывать какие-то методы...
заюзай YII
проще не куда.
как попробуешь - сразу понравится.

Мне ещё раз повторить? у меня свой движок, с блекджеком и пряниками, попутно глядя в чужие разработки, что не ясного?
Вордпресс написан на Yii, или может SourceBans, Hlstats? нет?
 

TF Studio

Участник
Сообщения
227
Реакции
207
Ок, ты - самый умный. Бог кодинга.
Wp - эталон правильного кода.
 

Snip80

Участник
Сообщения
49
Реакции
10
Продвинутый троллинг. Может - ошибаюсь?
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
Просто у кого-то сильное чсв

Ну... Здесь все же позиция infernozet более правильна ИМХО... Когда за основу берется фреймоворк, при этом от всех возможностей этого фреймворка используется хорошо если 1% - а зачем вообще нужно брать фреймворк? Самоизобретенный велосипед не содержит лишнего (Или же то что есть и там и там в "велосипеде" работает "проще") и за счет этого получается что в большинстве случаев использует меньше ресурсов (всех типов). Может он и сложнее в кодинге, зато шустрее потом
 

qfewfwefewfef3414123

Участник
Сообщения
94
Реакции
17
Ну... Здесь все же позиция infernozet более правильна ИМХО... Когда за основу берется фреймоворк, при этом от всех возможностей этого фреймворка используется хорошо если 1% - а зачем вообще нужно брать фреймворк? Самоизобретенный велосипед не содержит лишнего (Или же то что есть и там и там в "велосипеде" работает "проще") и за счет этого получается что в большинстве случаев использует меньше ресурсов (всех типов). Может он и сложнее в кодинге, зато шустрее потом

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

Если следовать вашему совето, то Yii не должно было быть, они должны были все использовать Zend, ведь он от создателей ПХП,
но почемуто появились всякие symfony Yii и прочие... вот и мой фреймворк будет, но узконаправленней.

Я сначала напишу фреймворкпод свои задачи, со всеми приблудами, и на нем уже напишу проект
 
Сверху Снизу