在JavaScript中,嵌套函数非常有用:闭包,私有方法以及您拥有的东西。
什么是嵌套PHP函数?有人使用它们吗?
这是我做的小调查
<?php function outer( $msg ) { function inner( $msg ) { echo 'inner: '.$msg.' '; } echo 'outer: '.$msg.' '; inner( $msg ); } inner( 'test1' ); // Fatal error: Call to undefined function inner() outer( 'test2' ); // outer: test2 inner: test2 inner( 'test3' ); // inner: test3 outer( 'test4' ); // Fatal error: Cannot redeclare inner()
基本上没有,我一直将其视为解析器的副作用。
伊兰·加珀林(Eran Galperin)误认为这些功能是某种私有的,只是outer()在运行之前才声明它们。它们也不是私有范围的,尽管确实延迟了,但它们确实污染了全球范围。作为回调,外部回调仍然只能被调用一次。我仍然看不到将其应用于很可能多次调用别名的数组有什么帮助。
outer()
唯一的“现实世界”的例子,我能挖出个是这个只能运行一次,并且可以IMO改写清洁。
我唯一能想到的是让模块调用[name] _include方法,该方法在全局空间中设置多个嵌套方法,并与
if (!function_exists ('somefunc')) { function somefunc() { } }
检查。
PHP的OOP显然是一个更好的选择:)