我对全局范围有疑问。我知道全局变量是邪恶的,但是需要使用它们(将它们作为参数传递不是一种选择)。有以下代码:
$conf = array();
function get_option($key){
global $conf;
var_dump($conf); // NULL
}
但是,如果您这样做:
global $conf;
$conf = array();
function get_option($key){
global $conf;
var_dump($conf); // work
}
效果很好。以前,global
我没有添加并且可以访问该变量。
问题是它与什么相关联或如何完成,该函数看到了该文件中声明的所有全局变量,该函数在哪里?感谢您的关注!
该函数始终可以将它们视为数组的元素
$GLOBALS
。但是,如果您真的想连续四次击中自己的脚,那么这就是秘诀:添加
事实上,您的文件连接到函数内部的另一个 php 文件中 - 因此,所有定义的、看似全局的变量在同一个函数内部都成为本地变量。例如:
如果在全局范围内连接 my_functions.php ,
$conf
它将是全局的,但在给出的示例中,$conf
它是函数内部的局部变量main_func()
,因此即使写在那里$conf
也不可见get_option()
global $conf
如果你从你提供的信息开始,那么一切都对你不利,需要进行相当深入的重构。关于这个问题,你可以这样做:
免责声明
在问题中指定的条件下,不可能有好的解决方案。只有在其他一切都不好的情况下,才能使用上述解决方案。如果您有机会人为地做所有事情,请不要使用此代码