使全局变量可用于函数中的包含文件

时间:2010-09-23 13:35:04

标签: php

我需要在函数中包含文件,文件使用前面脚本中定义的大量变量。使用global不是一种选择,因为不可能说在包含的文件中将使用哪些变量。唯一真正的解决方案是使所有全局变量在函数中可访问,例如:

     function finc($file)
    {

        foreach($GLOBALS as $k=>$v)
        {
            $$k=$v;
        } 
        include $file;
   }

但是当使用大量含有大量变量的文件时效果不佳,那么还有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

注意:您实际上是在导入所有全局变量。

extract($GLOBALS);

答案 1 :(得分:0)

这个问题没有好的答案。 只是一个建议。使用对象...... 你在做什么是可能的,但在我看来是一个非常糟糕的解决方案,因为你正在定义所有全局变量。但是有一种更有效的方法:[{1}},但最好在您添加的脚本中使用extract($GLOBALS) ...

答案 2 :(得分:0)

如果您正在为模板执行此操作,则应仅为模板提供“上下文”,而不是所有全局变量。只需指定一个应该可以在模板中访问的变量数组,并extract。{/ p>

如果它没有模板化您的工作,但路由您应该考虑将文件名返回到包括:

include getPathForPage('home');