gpt4 book ai didi

php - 当多次调用外部函数时,php 中的嵌套函数会抛出异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:58:01 25 4
gpt4 key购买 nike

以免假设我有以下内容

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();
}

关于php - 当多次调用外部函数时,php 中的嵌套函数会抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11968031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com