以免假设我有以下内容
function a(){
function b(){}
}
a(); //pass
a(); //error
为什么在第二次调用中抛出异常并且它说
cannot re-declare function b()
我认为每个函数调用都会创建一个新的活动记录,它包含自己的范围;
就像 PHP 以外的其他语言一样,当我们在函数中声明变量并调用该函数时,所有变量在其作用域内都处于活动状态,为什么内部函数不一样?
PHP 中的命名函数始终是全局的。因此,您需要检查函数 B 是否已创建:
function A() {
if (!function_exists('B')) {
function B() {}
}
B();
}
一种不同的解决方案是使用匿名函数(这更可能满足您的需求,因为该函数现在存储在变量中,因此位于 A 的函数范围内):
function A() {
$B = function() {};
$B();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)