Php 延迟加载程序?
我有一个加载类或文件的函数。它是这样工作的Php 延迟加载程序?,php,include,Php,Include,我有一个加载类或文件的函数。它是这样工作的 function load ( $type, $path, $file ) { ... switch($type) { case 'file': .... include $path . '/' . $file; break; } } 它在课堂上非常有效。它也适用于包含函数/html的文件。然而,如果我得到一个包含变量的文件,我就会遇到范围问题。有没有一种简单的方法将变量从load函数传递到调用它的
function load ( $type, $path, $file ) {
...
switch($type) {
case 'file':
....
include $path . '/' . $file;
break;
}
}
它在课堂上非常有效。它也适用于包含函数/html的文件。然而,如果我得到一个包含变量的文件,我就会遇到范围问题。有没有一种简单的方法将变量从load函数传递到调用它的任何函数中
有没有一种简单的方法将变量从load函数传递到调用它的任何函数中
没有load()
有自己的变量作用域,包含的文件继承该作用域
您必须将所有相关变量作为参数传递给load()
函数,或者,如果可能,使用$GLOBALS
访问变量(糟糕!)
一种解决方法是从load()
返回文件路径,而不是将其包含在内:
return $path . '/' . $file;
这样称呼:
$path = load(".....");
if ($path) include $path;
这将包括原始作用域中的文件。解决此问题的最简单方法是确保我的配置文件包含对象而不是变量。这消除了范围问题,因为变量可以静态调用
$user = database::user;
此解决方案还使得在应用程序运行时动态更改配置设置更加容易