我需要在函数中包含文件,文件使用前面脚本中定义的大量变量。使用global不是一种选择,因为不可能说在包含的文件中将使用哪些变量。唯一真正的解决方案是使所有全局变量在函数中可访问,例如:
function finc($file)
{
foreach($GLOBALS as $k=>$v)
{
$$k=$v;
}
include $file;
}
但是当使用大量含有大量变量的文件时效果不佳,那么还有更好的方法吗?
答案 0 :(得分:2)
注意:您实际上是在导入所有全局变量。
extract($GLOBALS);
答案 1 :(得分:0)
这个问题没有好的答案。
只是一个建议。使用对象......
你在做什么是可能的,但在我看来是一个非常糟糕的解决方案,因为你正在定义所有全局变量。但是有一种更有效的方法:[{1}},但最好在您添加的脚本中使用extract($GLOBALS)
...
答案 2 :(得分:0)
如果您正在为模板执行此操作,则应仅为模板提供“上下文”,而不是所有全局变量。只需指定一个应该可以在模板中访问的变量数组,并extract
。{/ p>
如果它没有模板化您的工作,但路由您应该考虑将文件名返回到包括:
include getPathForPage('home');