1. PHP 的闭包(匿名函数)将定义和调用合在一起了,普通函数它定义的位置和调用函数的位置不在一起,不够直观。闭包比较直观。
  2. PHP普通函数调用函数外部变量,要么global,要么传参。而闭包使用use引入外部变量。
  3. 闭包写法非常适合用来编写异步非阻塞回调模式的服务器程序(目前没写过这类程序,不太懂)
  4. 如果希望在闭包函数中修改外部变量,可以在use时为变量增加&引用符号即可.  而对global修饰的变量修改,就是修改原来的变量。use不使用&默认是传值。
    <?php 
    
    $a = 6;
    
    function foo()
    {
        global $a;
        echo $a;
        $a += 2;
        echo '<hr>';
        echo $a;
    }
    
    
    foo();
    
    echo '<hr>', $a;
    
    function bar(&$a) {
        return function () use(&$a){
            $a += 3;
            echo '<hr>', $a;
            echo '<hr>';
        };
    }
    
    bar($a)();
    
    echo '<hr>', $a;
    global和use修改变量的区别

     

  5. 参考:http://rango.swoole.com/archives/547