PHP 中嵌套函数声明的用例是什么?


What is the use cases for nested function declarations in PHP?

可能的重复项:
PHP 嵌套函数有什么用?

PHP 允许嵌套函数声明,如下所示:

function foo() {
    function bar() {
        return "bar";
    }
    return "foo";
}

但是这种语法的用例是什么?内bar被置于全局命名空间,因此它不会被垃圾回收,可以从外部使用外部功能并提供了很多混乱和可能的错误。为示例 调用 foo 两次会导致错误,除非您将if(!is_callable('bar'))内的声明。

使用嵌套声明创建条件声明不好要么,因为它造成的混乱。"为什么抱怨没有这样的功能,当它在那里工作得很好时?!?!"。

好吧,条件函数声明可能是唯一合法的用例,并且只为向后兼容性提供回退:

function makeSureAllDependenciesExist() {
    if (!function_exists('someFunctionThatOnlyExistsInNewerPhpVersions')) {
        function someFunctionThatOnlyExistsInNewerPhpVersions() {
            // fallback implementation here
        }
    }
}

除此之外,确实没有理由使用嵌套函数声明。