2010-11-01 39 views
0

我有一个加载类或文件的函数。它的工作原理是这样的。PHP - 延期加载程序?

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

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

回答

1

是否有一种简单的方法将负载函数中的变量传递到调用它的任何东西?

没有。 load()有其自己的变量范围,并且包含的​​文件继承该范围。

你将不得不对所有相关变量作为参数传递给load()功能,或者,如果可能的话,请访问使用变量$GLOBALS(呸!)

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

return $path . '/' . $file; 

,并调用它像这样:

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

THI s会将文件包含在原始范围内。

0

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

$user = database::user; 

该解决方案还使的它的应用程序运行时更容易动态地更改配置设置。