abstract://匿名函数赋值给变量 $demo1 = function ($name) { return $name . '想追求如花'; }; //调用匿名函数 echo $demo1('哥哥'), '<hr>'; //匿名函数也有自
//匿名函数赋值给变量 $demo1 = function ($name) { return $name . '想追求如花'; }; //调用匿名函数 echo $demo1('哥哥'), '<hr>'; //匿名函数也有自己的作用域,如果要在函数作用域中使用外部变量,除了传参,还可以这样:即引用外部变量用关键字use $belle = '周芷若'; //$demo2 = function ($name) { $demo2 = function ($name_para) use ($belle) { // return $name . '最爱的人是赵敏'; return $name_para . '最爱的人是: ' . $belle;//此次$belle不是参数,就是变量被调用 }; //调用匿名函数 echo $demo2('张无忌'), '<hr>'; //1.闭包函数当作局部变量使用 $func1 = function () { $name = '变量哥'; //定义一个内部的匿名函数 $test = function () use ($name) { return $name . ',我是匿名函数,我被另一个匿名函数包住且赋值给变量,你被我包住了,你是变量,而我必须被调用'; }; //调用,必须要调用一次,才能形成闭包 return $test(); }; echo $func1(), '<hr>'; //2.闭包函数当作函数参数使用 $name = '变量兄'; $test = function () use ($name) { return $name . ',你仍然被我调用,我会被当作参数使用'; }; $func2 = function (callable $callback) { //执行匿名回调并返回 return $callback(); }; //用匿名函数做为参数调用 echo $func2($test), '<hr>'; //3.闭包函数当用函数返回值使用 $func33 = function () { $name = '变量喵'; $test = function () use ($name) { return $name . ',我会被当返回值使用,但是先赋值给了另一个变量,要多加一对括号,因为我毕竟是个函数'; }; return $test; }; echo $func33()(), '<hr>'; //你可能见到最多的是这种简写形式 $func3 = function () { $name = 'Peter'; return function () use ($name) { return $name . ',你是变量,我是被当返回值使用的匿名函数,务必记着再加一对括号,事了拂衣去,深藏身与名'; }; }; // $func3() 的返回值是一个函数,所以再加一对圆括号,才可以执行 echo $func3()();
//经过这节课,这几个听上去高大上的名词对我来说再也不神秘了,谢谢老师
Correcting teacher:韦小宝Correction time:2018-11-28 16:58:17
Teacher's summary:不错!最后一句话说明你是真的理解了!但是课后还是要多练习!