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

Тема в разделе "Веб-технологии", создана пользователем infernozet, 14 ноя 2012.

  1. infernozet

    infernozet

    Сообщения:
    96
    Симпатии:
    18
    встала надобность реализовать систему подклюбчения веб плагинов на лету.
    Тоесть закачал, кликнул в админке включить, и живи радуйся.

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

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

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

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



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

    KorDen Atra esterní ono thelduin! Ньюсмейкер

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

    infernozet

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

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

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


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

    onotole.myarena.ru

    Сообщения:
    42
    Симпатии:
    34
    Папку плагина в архив, в менеджере плагинов выбор файла. После загрузки распаковываем архив и прописываем плагин в базу
     
  5. TF Studio

    TF Studio

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

    infernozet

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

    Код:
    <?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 минуты
    По поводу загрузки архивов есть противоречия, скрипты не на всех хостингах смогут распаковать архив. Я думаю получать Список фаилов с сервера, для модуля, и скачивать содержание фаилов, затем сохраняя по папкам.
     
    Последнее редактирование: 14 ноя 2012
  7. TF Studio

    TF Studio

    Сообщения:
    228
    Симпатии:
    209
    Зачем придумывать какие-то методы...
    заюзай YII
    проще не куда.
    как попробуешь - сразу понравится.
     
  8. infernozet

    infernozet

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

    TF Studio

    Сообщения:
    228
    Симпатии:
    209
    Ок, ты - самый умный. Бог кодинга.
    Wp - эталон правильного кода.
     
  10. Snip80

    Snip80

    Сообщения:
    49
    Симпатии:
    11
    Продвинутый троллинг. Может - ошибаюсь?
     
  11. TF Studio

    TF Studio

    Сообщения:
    228
    Симпатии:
    209
    Просто у кого-то сильное чсв
     
  12. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

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

    infernozet

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

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

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