PHP嵌套函数用于什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (143)

在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()
提问于
用户回答回答于

基本上没有,我一直把它当作解析器的一个副作用。

唯一的“现实世界”的例子,我能挖出个是这个只能运行一次,并且可以清洁IMO改写。

我能想到的唯一的用途是模块调用一个[名字] _include方法,它在全局空间中设置了几个嵌套的方法,

if (!function_exists ('somefunc')) {
  function somefunc() { }
}

PHP的面向对象显然是一个更好的选择

用户回答回答于

如果使用的是PHP 5.3,则可以使用匿名函数获得更多类似Javacript的行为:

<?php
function outer() {
    $inner=function() {
        echo "test\n";
    };

    $inner();
}

outer();
outer();

inner(); //PHP Fatal error:  Call to undefined function inner()
$inner(); //PHP Fatal error:  Function name must be a string
?>

输出:

test
test

扫码关注云+社区

领取腾讯云代金券