,, php的匿名函数是继php5.3之后新增添的功能,在越来越多的框架支持高版本的php之后,都有使用到此功能,手册上的解释比较生涩难懂,那么我们撇开手册不谈,以代码切入,希望让大家能更好的理解。
,
,,,,聊匿名函数之前,我们有必要说说变量函数
,,,1,首先,我们定义一个普通的函数
,,,,function 测试(a, b)美元{ ,,,,,,return a + b美元; ,,,} ,,,test 美元;=,测试(1、2); ,,,echo 测试;美元,,,//res =, 3
,,,2,将其改变为变量函数
,,,,function 测试(a, b)美元{ return a + b美元; } 美元test ,=, & # 39;测试# 39;; echo ,测试(1、2);美元,//res ,=, 3
,,,,变量函数就是把函数名赋值给一个变量,然后使用测试()或美元者有参数时美元测试(1、2)如此这般来使用。
,,,, 1,匿名函数定义,,
,,,,,匿名函数,顾名思义就是没有函数名的函数。
,,,,我们把上面例子中的函数名称去掉就是匿名函数了,如下:,
,,,,,,,,function () { ,,,,,,,,,, ,,,,,,,},,,//这段代码就是没有函数名称的匿名函数的主体部分了,切记【末尾需要加上分好】 ,,,,,, ,,,,,,,test 美元;=,函数(){ ,,,,,,,,,,return & # 39; 1111111111111 & # 39;; ,,,,,,,},, ,,,,,,, ,,,,,,,test 美元;,=,函数(a, b)美元{ ,,,,,,,,,,,return a 美元;+,b美元; ,,,,,,,},,,//,这段代码就是一个标准的匿名函数了,有函数主体,有返回值,这里的返回值不是回报,而是返回给了变量测试美元。
,,,,,至于为什么末尾要加分号,你可以这样理解:,,
,,,,,一个普通变量的赋值$ name=& # 39; zhangsan& # 39;;,变量赋值是需要在末尾加分号的。
,,,,这里是匿名函数,同样也是变量的赋值,所以加上分号也好理解了。
,,,
,,,, 2,匿名函数使用
,,,,,,,,,,,test 美元;=,函数(){ ,,,,,,,,,,,,,,return & # 39; 1111111111111 & # 39;; ,,,,,,,,,,},, ,,,,,,,,,,echo 测试();美元,//和变量函数一样 ,,,,,,, ,,,,,,,,,,test 美元;,=,函数(a, b)美元{ ,,,,,,,,,,,,,return a 美元;+,b美元; ,,,,,,,,,,}; ,,,,,,,,,,echo 测试(1、2);美元,//同理,传入参数
, <强>三,疑问(匿名函数的意义)强>
,,,,,看到这里,大家难免有疑问,这个变量函数我们用的都比较少,这个匿名函数视乎并没有普通函数来的实现,那这个匿名函数存在的意义是什么呢?
,,,,,匿名函数在设计时,并不是为了跟随模仿js而来的,php的匿名函数主要的目的是为了这两个功能【闭包函数】,【回调函数】。
,,,,,关于闭包和回调我们下篇文章再和大家聊聊。
,,