PHP笔记之闭包

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

$func = function(){

};
$func();

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

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

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

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

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

你可能感兴趣的:(PHP笔记之闭包)