PHP笔记之闭包

匿名函数
在PHP5.3.0以上版本有效
也称闭包函数,可以有参数,有返回值,结尾处必须加分号

$func = function(){

};
$func();

匿名函数的一个用法,类似于闭包。

    function demos($fun){
            echo $fun();
    }
    demos(function(){
        return "@22222".'<br>';
    });

闭包
闭包的实现主要是靠匿名函数
将匿名函数在普通函数中当做参数传入,也可以被返回。这就是一个简单地闭包。
特点:
1.闭包外层是个函数
2.闭包内部都有函数
3.闭包会return内部函数
4.闭包返回的函数内部不能有return
5.执行闭包后,闭包内部变量会存在,闭包内部函数的内部变量不会存在
6.闭包函数返回时,函数内部变量处于激活状态,函数所在栈区依然保留

function demo(){
        $a = 10;
        $b = 20;
        //关键词use 使匿名函数能调用函数内部的参数,&的引用,使变量的值发生改变
        $one = function($str) use(&$a,&$b){
            echo $str."<br>";
            echo $b."<br>";
            $a++;
            echo $a."<br>";
            //内存函数不能加返回值,不然直接终止
        };
        return $one;
    }
    $var = demo();
    $var = ("what");
    $var = ("123");//通过两次调用,发现每次a的值均有变化

闭包的应用场景
1.保护函数内的变量安全。外层函数中变量只有内部函数才能访问,而无法通过其他途径访问到,因此保护了外层变量的安全性。
2.在内存中维持一个变量,外层函数中的变量一直存在于内存中,因此每次执行都会用到。

推荐阅读更多精彩内容

  • 闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代...
    雨影阅读 666评论 0 2
  • 闭包: 官方”的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该...
    小裁缝sun阅读 558评论 0 5
  • 本章将会介绍 闭包表达式尾随闭包值捕获闭包是引用类型逃逸闭包自动闭包枚举语法使用Switch语句匹配枚举值关联值原...
    寒桥阅读 1,456评论 0 3
  • 不知不觉间,二十一天成长训练营计划已经过了一多半了。虽然我仍然不能提笔则文思泉涌,但总归是较之之前有了一点点进步了...
    季儒阅读 220评论 0 0
  • 千寻佳人处,万里不得寐。 无人进我心,只为一人醉。
    我爱吃任何鱼阅读 167评论 0 2