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

时间:2012-08-14 09:09:11

标签: php

  

可能重复:
  What are PHP nested functions for?

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

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

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

使用嵌套声明来创建条件声明并不好 或者,因为它产生的混乱。 “为什么抱怨这一点 没有这样的功能,当它在那里工作得很好?!?!“。

1 个答案:

答案 0 :(得分:6)

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

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

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