Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Глобальные переменные в модулях


Автор: TUMS 19.11.2008, 10:20
Доброе утро, уважаемые комрады.
По глупости и наивности своeй начал писать модульную систему, однако за неимением опыта получается вполне не так, как ожидалось...

Структура:
Код

/mods/FolderName/mod.php // файл описания модуля
/mods/FolderName/exe.php // главный исполняемый файл модуля
/libs/core.php     // Ядро
/index.php // Индекс

/libs/core.php
Код

$modules = array();
foreach(scandir($config['mods_dir']) as $dir) {
    if(is_dir($config['mods_dir'].'/'.$dir) 
&& file_exists($config['mods_dir'].'/'.$dir.'/'.$config['mods_main']) 
&& file_exists($config['mods_dir'].'/'.$dir.'/'.$config['mods_conf'])) {
        require_once($config['mods_dir'].'/'.$dir.'/'.$config['mods_conf']);
        $modules[$dir]['path'] = $dir;
        $modules[$dir]['name'] = $module['name'];
        $modules[$dir]['description'] = $module['description'];
        $modules[$dir]['template'] = $module['template'];
        $modules[$dir]['fullpath'] = $config['mods_dir'].'/'.$dir.'/'.$config['mods_main'];
    }
}

/mods/FolderName/mod.php
Код

$module['name'] = 'Трекер';
$module['description'] = 'Тут живет лось =)';
$module['template'] = 'tracker';

/mods/FolderName/exe.php
Код

function show_rec($profa_id) {
    global $db;
    return $db->select('SELECT * FROM item_template WHERE item_template.class =  9 
AND item_template.subclass = ? ORDER BY item_template.RequiredSkillRank ASC', $profa_id);
}

if(!isset($_GET['p_id'])) {
    $prof = htmlspecialchars($_GET['p_id']);
    foreach($data['profs'] as $profa => $profa_id) {
        echo '<a href="'.$_SERVER['php_self'].'?mode='.$_GET['mode'].'&p_id='.$profa_id.'">'.$profa.'</a><br />';
    }
}
elseif(isset($_GET['p_id'])){
    $p_id = (int)$_GET['p_id'];
    $recipes = show_rec($p_id);
    var_dump($recipes);
}

index.php
Код

include('libs/core.php');
if(!isset($_GET['mode'])) {
    echo 'lol';
}
else {
    $mode = htmlspecialchars($_GET['mode']);
    if(array_key_exists($mode, $modules)) {
        require_once($modules[$mode]['fullpath']);
    }
}


Проблема:
При передаче в модуль GET-запроса вида index.php?mode=FolderName&p_id=x этот самый p_id не определяется.

Намекните тонко на место где я просчитался smile

Заранее благодарен, Тумс.


UPD: Уважаемые комрады, извиняйте. После непонятно каких действий почему-то всё заработало. Спасибо за внимание.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)