PHP 访问其他函数内部函数中的全局变量



>我有文件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 关键字不是错误。如果文件包含在函数内部,则可以使用它。

您可能遇到包含文件妨碍

的问题

相关内容

  • 没有找到相关文章

最新更新