php含有闭包特殊使用
2017-06-02 17:57
155 查看
讨论写法,形式如下,调用以闭包为参数的函数
以下是一个获取$attribs数组键为value的值Edward复杂写法。这种算是自找虐吧。
调用
它的实际运行过程是这样的,$attrib是一个数组和闭包函数综合体,...$attrib前面...会自动将$attrib中的第一个非闭包值取出这里是一个数组,后面的第二个值是一个闭包,它会直接传递给闭包,并将刚刚取出的非闭包值传递给闭包函数当做参数。
其实这只是一种写法
它是由一下因素决定:一是调用函数getValue参数个数,上面是两个。
二是外界传递的参数形式[],例如上面的[aray(),$ex]形式。
三是匿名函数本身function($a) use ($k){}。
其实要将函数写成function getKeys($request,$dd,Closure $next)形式,就要将参数写成$attrib = [array('attr'=>'value'),array("ssss"),array("dddd"),$ex];形式。数组以一维各个值的形式对应函数中各个参数。在函数里面要怎么处理就看你自己了。
--------------------------------------------------------------------------------------------------------------------
其实以上是php5.6及以上的版本才支持的写法,php5.6以下的就会报错的,例如php5.5。若需要测试可以到线上在线编辑做测试。
https://www.shucunwang.com/RunCode/php5.6/。
getValues(...$attrib)含义。
以下是一个获取$attribs数组键为value的值Edward复杂写法。这种算是自找虐吧。
$attribs = [ 'name' => 'first_name', 'value' => 'Edward' ]; $ex = function ($t) use ($attribs) { // ... then we 'use' the actual array here foreach(array_keys($attribs) as $k => $v){ if(current($t) == $v){ return $attribs[$v]; }} }; function getValues($request,Closure $next){ return $next($request); } $attrib = [array('attr'=>'value'),$ex]; print_r(getValues(...$attrib));
调用
getValues(...$attrib)
它的实际运行过程是这样的,$attrib是一个数组和闭包函数综合体,...$attrib前面...会自动将$attrib中的第一个非闭包值取出这里是一个数组,后面的第二个值是一个闭包,它会直接传递给闭包,并将刚刚取出的非闭包值传递给闭包函数当做参数。
其实这只是一种写法
getValues(...$attrib)
它是由一下因素决定:一是调用函数getValue参数个数,上面是两个。
二是外界传递的参数形式[],例如上面的[aray(),$ex]形式。
三是匿名函数本身function($a) use ($k){}。
其实要将函数写成function getKeys($request,$dd,Closure $next)形式,就要将参数写成$attrib = [array('attr'=>'value'),array("ssss"),array("dddd"),$ex];形式。数组以一维各个值的形式对应函数中各个参数。在函数里面要怎么处理就看你自己了。
--------------------------------------------------------------------------------------------------------------------
其实以上是php5.6及以上的版本才支持的写法,php5.6以下的就会报错的,例如php5.5。若需要测试可以到线上在线编辑做测试。
https://www.shucunwang.com/RunCode/php5.6/。
相关文章推荐
- xml文档里含有特殊字符时的处理方法(php)
- PHP闭包(Closure)使用详解
- php匿名函数与闭包的简单使用
- 使用PHP实现水仙花数及各种特殊有趣数的输出
- PHP使用正则表达式过滤特殊的字符和空白
- php插入含有特殊符号数据的处理方法
- php处理字符串,判断是否含有特殊符号,非中文,数字,字符
- PHP中闭包的使用
- php闭包使用
- PHP使用preg_split()分割特殊字符(元字符等)的方法分析
- PHP闭包(Closure)使用详解
- 谈谈PHP闭包(Closure)的使用
- 使用ICU库中的正则表达式匹配关键字之间含有特殊字符的关键字示例
- PHP使用trim函数去除字符串左右空格及特殊字符实例
- PHP闭包(Closure)使用详解
- php 数组当中一些特殊使用
- php插入数据含有特殊符号的处理方法
- PHP使用Mial函数时Email地址过滤特殊字符
- php插入数据含有特殊符号的处理方法
- 深入了解PHP闭包的使用以及实现