<?php
/*1.匿名函数也叫闭包函数,顾名思义就是没有名字的函数;
2.因为没有名字,所以匿名函数不能直接调用,需要先将匿名函数赋值给一个变量,然后由变量函数的形式来调用;
3.匿名函数在函数体结束后必须在}后加上”;”,这也是它与普通函数的区别;
4.匿名函数可以正常传参数和参与计算;
*/
$var=function($a,$b,$c)
{
return $a+$b+$c;
};//加分号,切记
var_dump($var);//输出变量类型为一个对象,且隶属于closure类中
echo $var(1,2,3);//输出6
echo “<br>”;
/*5.我们知道,函数不能直接使用外部定义的全局变量,要想在函数中使用必须加上global关键字;
6.闭包函数的概念通俗的讲:就是在子函数中可以直接调用父函数中所定义的变量;
7.要想让子函数使用父函数中的变量必须使用关键字use来实现
*/
function demo()//父函数demo
{
$a=10;
$b=20;
function one()//子函数one
{
global $a;
echo “1111111111{$a}111111<br>”;//无法直接输出在父函数中定义的变量$a,如若声明global,则会调用函数外部的全局变量
}
function two()//子函数two
{
global $b;
echo “222222222222222{$b}<br>”;//无法输出$b,在子函数中定义了global也不行
}
$three=function()use($a,$b)//子函数/匿名函数$three(),在匿名函数中使用use加父函数中的变量名就可以在子函数中输出
{
echo “–$a–aaaaaa–$b–<br>”;//可以正常输出$a和$b
};//切记加分号
$three();
}
demo();
/*
8.当内层函数调用外部函数的变量时,要加引用,否则不会改变局部变量在函数中的值;
9.闭包的外部是个函数,内部是一个匿名函数;
10.闭包函数的作用就是保护闭包中的内存变量,闭包执行完毕后闭包内部的变量不会存在,而外部函数的变量则会保存;
*/
function test()
{
$a=10;
$b=20;
$inter=function()use(&$a,&$b)//加引用
{
echo $a,$b.”<br>”;
$a++;
$b++;
echo $a,$b.”<br>”;
//return,内层函数不能加返回值
};
return $inter;
}
$test=test();
$test();
$test();
$test();//多次输出后发现局部变量的值并不会被释放
//11.匿名函数可以当参数来使用
function test1($func)
{
echo $func();
echo “<br>”;
}
test1(function(){
return “$$$$$$$$”;
});//直接将一个匿名函数当做参数传入函数中;
?>
原文链接:https://blog.csdn.net/living_ren/article/details/73188233
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
评论前必须登录!
立即登录