一个封闭的PHP相当于一个匿名函数,如的。没有名称的功能。即使从技术上讲这是不正确的,但闭包的行为仍与函数相同,只是具有一些额外的功能。
闭包不过是Closure类的对象,它是通过声明不带名称的函数而创建的。例如:
<?php
$myClosure = function() {
echo '你好,世界!';
};
$myClosure(); // Shows "你好,世界!"请记住,这$myClosure是的一个实例,Closure这样您就可以真正使用它了(参见http://fr2.php.net/manual/en/class.closure.php)
您需要关闭的经典案例是必须为callable函数赋予a ,例如usort。
这是一个根据每个人的同胞数对数组进行排序的示例:
<?php
$data = [
[
'name' => 'John',
'nbrOfSiblings' => 2,
],
[
'name' => 'Stan',
'nbrOfSiblings' => 1,
],
[
'name' => 'Tom',
'nbrOfSiblings' => 3,
]
];
usort($data, function($e1, $e2) {
if ($e1['nbrOfSiblings'] == $e2['nbrOfSiblings']) {
return 0;
}
return $e1['nbrOfSiblings'] < $e2['nbrOfSiblings'] ? -1 : 1;
});
var_dump($data); // 首先显示Stan,然后显示John,最后显示Tom