码迷,mamicode.com
首页 > Web开发 > 详细

PHP的匿名函数

时间:2018-11-25 14:38:43      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:amp   函数   ice   回调   结果   strong   回调函数   http   赋值   

一:匿名函数 (注意:在php5.3.0 或以上才能使用)

     php中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数。最常用的就是回调函数的参数值。

     匿名函数的定义:

$func = function(){

    ....

 };
//把匿名函数赋值给变量,通过变量来调用

$func = function($str){   

echo $str;
};

$func("hello world!");

二:闭包

将匿名函数放在普通函数中,也可以将匿名函数返回,这就构成了一个简单的闭包.
function closureFunc1(){
    $func = function(){
        echo "hello";
    };
    $func();
}
closureFunc1();


//在匿名函数中引用局部变量
function closureFunc2(){
    $num = 1;
    $func = function(){
        echo $num;
    };
    $func();
}
closureFunc2();


上面的函数运行后,会报Notice错误,说明我们不能在匿名函数中这样使用局部变量,这时候就要引用一个php的关键字 use
function closureFunc2(){
    $num = 1;
    $func = function() use($num){
        echo $num;
    };
    $func();
}
closureFunc2();

// 返回匿名函数

function closureFunc3(){
    $num = 1;
    $func = function() use($num){
        echo $num;
    };
    return $func;
}
$func = closureFunc3(); //函数返回匿名函数
$func(); //然后我们在用$func() 调用


当我们在返回匿名函数时候怎么给匿名函数传参呢? 其实跟普通函数传参数一样
function closureFunc4(){
    $num = 1;
    $func = function($str) use($num){
        echo $num;
        echo "\n";
        echo $str;
    };
    return $func;
}
$func = closureFunc4();
$func("hello, closure4");


【怎么用闭包来改变上下文引用的变量值?】

function closureFunc5(){
    $num = 1;
    $func = function() use($num) {
        echo "\n";
        $num++;
        echo $num;
    };
    echo "\n";
    echo $num;
    return $func;
}
$func = closureFunc5();
$func();
$func();
$func();



【测试引用 & 符 ,再看结果】
function closureFunc5(){
    $num = 2;
    $func = function() use(&$num) {
        echo "\n";
        $num++;
        echo $num;
    };
    echo "\n";
    echo $num;
    return $func;
}
$func = closureFunc5();
$func();
$func();
$func();



把匿名函数当作参数传递
function callFunc($func){
    $func("argv");
}

callFunc(function($str){
    echo $str;
})


更多资料请参考开发手册或者官网 : http://www.php.net
                                                      

PHP的匿名函数

标签:amp   函数   ice   回调   结果   strong   回调函数   http   赋值   

原文地址:https://www.cnblogs.com/lxlx2018done/p/10015356.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!