Как стать автором
Обновить

Функция Load для собственного framework

Время на прочтение1 мин
Количество просмотров496
Здравствуйте уважаемые Знатоки PHP. Сегодня хочу спросить у вас совета как быть.

Про необходимость написания своего «велосипеда», фреймворка, мне вдаваться бы не хотелось, это было просто необходимо. Может быть я делаю не совсем всё правильно, поправьте если так, у меня расширения загружаются через функцию 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() и благополучно в ней умирают не попадая в глобальные переменные. То есть, я не могу в одном модуле назначить переменную, а в другом её использовать. Теперь вопрос — как это обойти?

Один способ: в функцию load() добавить global $html,$ajax, $user,$tags,$info… тут я перечисляю все переменные которые требуетя «переносить» из модуля в модуль. Приходится пополнять список этих переменных по ходу работы над проектом — это не удобно. Другой способ: глобальлной объявить одну переменную global $_G; и использовать для передачи данных между модулями только её — тоже не есть хорошо, накладывает определённые ограничения в проекте. Переносить весь $GLOBALS в функцию через foreach () { global $($var); } слишком расточительно… а перечислять get_defined_vars() нужно по идее до того как модуль загрузится.

Посоветуйте пожалуйста как быть?
Теги:
Хабы:
+1
Комментарии48

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн