您的当前位置:首页正文

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.在内存中维持一个变量,外层函数中的变量一直存在于内存中,因此每次执行都会用到。