2013-04-05 96 views
3

我很努力地理解范围,什么阻止我的新代码的工作(假设它是一个范围问题)。PHP函数范围失败

下面的函数是在一个文件中PATH.'/includes/custom-functions.php'引用的类:

function infusion() { 
     require_once(PATH.'/classes/infusion.php'); //PATH is defined in WordPress from ~/wp-content/themes/theme/ 
     return new infusion(); 
    } 

类是从/api/目录中的另一个文件PATH.'/api/isdk.php'和连接凭据依赖。从PATH .'/includes/custom-functions.php'以内,我有许多其他功能,调用$infusion = infusion();并完美工作。

问题
我创建了一个新的文件:PATH.'/includes/report.php',我需要访问$infusion = infusion();但不能获得通过或者重复从上面的定义function infusion()工作;使用require_once();;或使用include();。所有这三个选项都只是杀死了其余的代码,我只能得出结论 - 嗯,我没有任何结论。

任何帮助将不胜感激。

回答

1

我假设代码没有使用名称空间,因此您不允许重新声明infusion函数(通过重新定义函数或重新包括该类)。

includes/report.php文件应该只是有:

require_once PATH.'/includes/custom-functions.php'; 

// your other code here ... 

$infusion = infusion(); 

这可能是其它文件/类,你包括你的文件已经要求沿线custom-functions.php的情况下,所以你可能能够完全跳过。另请注意,在尝试使用它之前,应该已经在某处定义了PATH常量(直接或通过include d文件)。如果您将error_reporting设置为包含E_ALL,那么如果该常数不存在,您将在错误日志中收到通知。

如果失败,您的错误日志可能会提供一些关于您的问题的额外背景信息。

+0

我将不得不捅更多... 仔细检查,没有一个问题的文件已经需要'custom-functions.php','PATH'常量已经被声明之前引用它,但是当我添加'require_once();'时,它会中断输出,所以我尝试添加错误报告。 – macgregor 2013-04-10 20:33:39

+0

我回来了,同样的问题,让我完全失去了模糊! 我有一个像这样打开的文件handler.php: – macgregor 2013-08-29 22:01:45