武英斌-博客

PHP闭包

发布时间:6年前热度: 523 ℃评论数:

PHP闭包和匿名函数使用的语法与普通函数相同,不过别被这一点迷惑了,闭包和匿名函数其实是伪装成函数的对象。如果审查PHP闭包或匿名函数,会发现它们是Closure类的实例。闭包和字符串或整数一样,也是一等值类型。

下面的例子会输出    PHP Hello   可以发现函数可以当做变量调用,也可以互相传递

例子:

<?php

//创建闭包
$closure = function ( $name ) {
return sprintf('%s Hello ',$name);
};

echo $closure('PHP');

输出:PHP Hello


//匿名函数当做回调函数使用

$numberPlusOne = array_map(function($number){
return $number + 1;
},[1,2,3]);

print_r($numberPlusOne);

输出: Array ( [0] => 2 [1] => 3 [2] => 4 )

//使用Use关键字附加状态

function enclosePerson($name){ return function ($doCommand,$doCommand2,$doCommand3) use ($name){ return sprintf('%s ,%s,%s,%s',$name,$doCommand,$doCommand2,$doCommand3); }; } $clay = enclosePerson('Clay');

echo $clay('doCommand','doCommand2','doCommand3');

输出 :Clay ,doCommand,doCommand2,doCommand3

error

手机扫码访问