>我有文件a.php看起来像
function func_1() {
inlude_once(b.php);
$somevar = 'def';
func_2($somevar);
}
和b.php
看起来像$some_global_var = 'abc';
function func_2($var) {
global $some_global_var;
echo $some_global_var.$var;
}
由于某种原因,我只得到def结果,为什么func_2看不到 $some_global_var ?
因为你忘记了func_1
的范围。所以当你包含你的定义时,这就是你的代码在PHP上的样子
function func_1() {
$some_global_var = 'abc'; // <- this is inside the scope of the parent function!
function func_2($var) {
global $some_global_var;
echo $some_global_var.$var;
}
$somevar = 'def';
func_2($somevar);
}
你在func_1
里面做。因此,该变量在全局范围内从未真正可用。如果在外部定义了$some_global_var = 'abc';
,则它在全局范围内。
您应该做的是将其作为参数注入。全局变量是一种不好的做法
function func_1() {
$some_global_var = 'abc';
function func_2($var, $var2) {
echo $var2 . $var;
}
$somevar = 'def';
func_2($somevar, $some_global_var);
}
global
放在它前面。
根据 PHP 文档
在函数外部使用 global 关键字不是错误。如果文件包含在函数内部,则可以使用它。
您可能遇到包含文件妨碍
的问题