PHP - Отложить загрузчик? - PullRequest
       1

PHP - Отложить загрузчик?

0 голосов
/ 01 ноября 2010

У меня есть функция, которая загружает класс или файл.Это работает примерно так.

function load ( $type, $path, $file ) {
  ...
  switch($type) {
    case 'file':
      ....
      include $path . '/' . $file;
    break;
  }
}

Это отлично работает для классов.Это также хорошо работает для файлов, содержащих функции / html.Однако, если я получаю файл, который содержит переменные, я сталкиваюсь с проблемой области видимости.Есть ли простой способ передать переменные из функции загрузки во все, что ее вызывает?

Ответы [ 2 ]

1 голос
/ 01 ноября 2010

Есть ли простой способ передать переменные из функции загрузки во все, что ее вызывает?

Нет. load() имеет собственную переменную область, и включенный файл наследует эту область.

Вы должны будете передать все соответствующие переменные в качестве параметров в функцию load() или, если возможно, получить доступ к переменным, используя $GLOBALS (чёрт!)

Один обходной путь мог бы вернуть путь к файлу из load() вместо включения его:

return $path . '/' . $file;

и называя это так:

$path = load(".....");
if ($path) include $path;

это будет включать файл в исходную область.

0 голосов
/ 02 ноября 2010

Самый простой способ решить эту проблему - убедиться, что мои файлы конфигурации содержат объекты вместо переменных. Это устранило проблему области видимости, поскольку переменные можно было вызывать статически.

$user = database::user;

Это решение также значительно упрощает динамическое изменение настроек конфигурации во время работы приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...