可能的重复项:
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
}
}
}
除此之外,确实没有理由使用嵌套函数声明。