Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 延迟加载程序?_Php_Include - Fatal编程技术网

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;
此解决方案还使得在应用程序运行时动态更改配置设置更加容易