PHP - 推迟加载器?

时间:2010-11-01 17:42:31

标签: php include

我有一个加载类或文件的函数。它的工作原理是这样的。

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

它适用于课程。它也适用于包含函数/ html的文件。但是,如果我得到一个包含变量的文件,我会遇到范围问题。有没有一种简单的方法可以将变量从load函数传递给调用它的任何东西?

2 个答案:

答案 0 :(得分:1)

  

有没有一种简单的方法可以将变量从load函数传递给调用它的任何东西?

不。 load()有自己的变量作用域,包含的文件继承该作用域。

您必须将所有相关变量作为参数传递给load()函数,或者,如果可能,使用$GLOBALS访问变量(哎呀!)

一种解决方法可能是从load()返回文件路径而不是包含它:

return $path . '/' . $file;

并像这样调用它:

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

这将包括原始范围内的文件。

答案 1 :(得分:0)

解决此问题的最简单方法是确保我的配置文件包含对象而不是变量。这消除了范围问题,因为变量可以静态调用。

$user = database::user;

此解决方案还使得在应用程序运行时动态更改配置设置变得更加容易。