2

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

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

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

但是这种语法的用例是什么?内部bar被放入全局命名空间,因此它不会被垃圾收集,可从外部函数外部使用,并提供很多混乱和可能的错误。例如,调用foo两次会导致错误,除非您将声明包装在if(!is_callable('bar')).

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

4

1 回答 1

6

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

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

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

于 2012-08-14T09:13:52.280 回答