PHP允许嵌套函数声明,如:
function foo() {
function bar() {
return "bar";
}
return "foo";
}
但这种语法的用例是什么?内部bar
被放置
全局命名空间所以它不是垃圾收集,可以从外部使用
外部功能,并提供了很多混乱和可能的错误。对于
调用foo
两次的示例会导致错误,除非您将其包装
if(!is_callable('bar'))
内的声明。
使用嵌套声明来创建条件声明并不好 或者,因为它产生的混乱。 “为什么抱怨这一点 没有这样的功能,当它在那里工作得很好?!?!“。
答案 0 :(得分:6)
好吧,条件函数声明可能是唯一的合法用例,并且只提供后向兼容性的后备:
function makeSureAllDependenciesExist() {
if (!function_exists('someFunctionThatOnlyExistsInNewerPhpVersions')) {
function someFunctionThatOnlyExistsInNewerPhpVersions() {
// fallback implementation here
}
}
}
除此之外,确实没有理由使用嵌套函数声明。