Здравствуйте уважаемые Знатоки PHP. Сегодня хочу спросить у вас совета как быть.
Про необходимость написания своего «велосипеда», фреймворка, мне вдаваться бы не хотелось, это было просто необходимо. Может быть я делаю не совсем всё правильно, поправьте если так, у меня расширения загружаются через функцию load($path) в которой можно будет вставить потом определение абсолютного пути или запрет на загрузку чего-то, в общем смысл что это не просто require_once(). Однако, столкнулся с большой проблеммой — переменные…
С проблемой я столкнулся когда начал загружать через неё модули. Дело в том, что все переменные загружаемого модуля попадают в функцию load() и благополучно в ней умирают не попадая в глобальные переменные. То есть, я не могу в одном модуле назначить переменную, а в другом её использовать. Теперь вопрос — как это обойти?
Один способ: в функцию load() добавить global $html,$ajax, $user,$tags,$info… тут я перечисляю все переменные которые требуетя «переносить» из модуля в модуль. Приходится пополнять список этих переменных по ходу работы над проектом — это не удобно. Другой способ: глобальлной объявить одну переменную global $_G; и использовать для передачи данных между модулями только её — тоже не есть хорошо, накладывает определённые ограничения в проекте. Переносить весь $GLOBALS в функцию через foreach () { global $($var); } слишком расточительно… а перечислять get_defined_vars() нужно по идее до того как модуль загрузится.
Посоветуйте пожалуйста как быть?
Про необходимость написания своего «велосипеда», фреймворка, мне вдаваться бы не хотелось, это было просто необходимо. Может быть я делаю не совсем всё правильно, поправьте если так, у меня расширения загружаются через функцию load($path) в которой можно будет вставить потом определение абсолютного пути или запрет на загрузку чего-то, в общем смысл что это не просто require_once(). Однако, столкнулся с большой проблеммой — переменные…
function load($path) {
static $debug;
if (file_exists($path)) {
$debug[] = "load($path): Success";
require_once( $path );
return true;
}
else {
$debug[] = "load($path): Path not exists";
return false;
}
}
С проблемой я столкнулся когда начал загружать через неё модули. Дело в том, что все переменные загружаемого модуля попадают в функцию load() и благополучно в ней умирают не попадая в глобальные переменные. То есть, я не могу в одном модуле назначить переменную, а в другом её использовать. Теперь вопрос — как это обойти?
Посоветуйте пожалуйста как быть?