Посоветуйте как сделать.

Тема в разделе "PHP", создана пользователем avgaz, 3 авг 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    В общем есть CMS суть в следующем для установки к ней дополнительных модулей нужно каждый раз в файле index модули прописывать добавлять название этого модуля для его открытия.
    Вот часть код файла index где нужно прописывать
    PHP:
    $switch = array('blog'         =>   "blog",
                    
    'chat'         =>   "chat",
                    
    'contents'     =>   "contents",
                    
    'downloads'    =>   "downloads",
                    
    'gallery'      =>   "gallery",
                    
    'news'         =>   "news",
                    
    'quote'        =>   "quote",
                    
    'reviews'      =>   "reviews",
                    
    'search'       =>   "search",
                    
    'topsite'      =>   "topsite",
                    
    'urlobox'      =>   "urlobox",
                    
    'poll'      =>   "poll",
                    
    'contact'      =>   "contact",
                    
    'recommend'      =>   "recommend",
            
    'staff'        =>   "staff",
            
    'docs'         =>   "docs",
    //Meo: Changed in C 0.1 for Ajax integration
            
    'ajax'         =>   "ajaxout",
    // rusmkportal integration ajax
            
    'rajax'         =>   "rajax" 
                    
    );

    //Added by Kimi in C1.2.2 (this is by Mark)
    if (is_array($mkportals->input['ind'])) {
    $message $mklib->lang['error_noallow'];
    $mklib->error_page($message);
    exit;
    }

    if (!isset(
    $switch[$mkportals->input['ind']])) {
        
    $mkportals->input['ind'] = "contents";
    }
    if (!
    $mklib->disablegzip && $mkportals->input['ind'] != "downloads") {
        
    ob_end_clean();
        @
    ob_start('ob_gzhandler');
    }
    require 
    "./mkportal/modules/{$switch[$mkportals->input['ind']]}/index.php";
    Вопрос в следующем как можно этого избежать что бы каждый раз не прописывать новый модуль ????
     
  2. wtf?!

    wtf?! Постоялец

    Регистр.:
    29 июл 2009
    Сообщения:
    53
    Симпатии:
    9
    Если убрать большой массив с перечислением, то можно сделать огромную дырку в скрипте (можно будет любой существующий файл подключить).
     
  3. lena berkova

    lena berkova

    Регистр.:
    14 янв 2009
    Сообщения:
    441
    Симпатии:
    19
    попробуй сделать конфиг файл или таблицу баз данных, где хранить названия модулей и при добавлении нового модуля делать там новую запись.
     
  4. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    В других cms нет выборки по массиву и дырок доже как нет.

    Добавлено через 50 секунд
    Это всё можно, но лишние(й) запросы в БД как бы не нужны
     
  5. wtf?!

    wtf?! Постоялец

    Регистр.:
    29 июл 2009
    Сообщения:
    53
    Симпатии:
    9
    есть понятие архитектура движка. В других CMS, например, за разные действия отвечают разные скрипты (разные файлы, как в vBulletin, например). В твоем случае у тебя все действия запускаются через один скрипт index.php.

    Решение тогда одно остается, вынести всю инициализацию, что происходит в index.php (подключение конфигов, создание соединение с базой и т.п) в отдельный файл типа init.php, а его уже include из файлов модулей.

    Ну и все ссылки в приложении поменять на прямые ссылки до скриптов модулей.
     
  6. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    Тут и не пахнет никакой архитектурой. Есть стандарты проектирование типа модель-представление-управление, а то что конфигурация правится вручную в файле да еще и в индексе, это просто быдлокод
     
    wtf?! нравится это.
  7. wtf?!

    wtf?! Постоялец

    Регистр.:
    29 июл 2009
    Сообщения:
    53
    Симпатии:
    9
    [* holywar detected]

    быдлокод так быдлокод, только он завернут в обертку index, а не размазан по нескольким файлам.

    извините если задел ваши лучшие чувства про "архитектуру приложений" )
     
  8. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    а что тут завернуто?) список подключаемых модулей?) а как эти модули должны работать и взаимодействовать с ядром они сами должны догадаться? Если уж совсем тяжко можно хранить конфиг в БД и кешировать запрос
     
  9. wtf?!

    wtf?! Постоялец

    Регистр.:
    29 июл 2009
    Сообщения:
    53
    Симпатии:
    9
    Вы о чем? )
     
  10. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    я про ООП ;)
     
Статус темы:
Закрыта.