闭包的基本用法
一个封闭的 PHP 相当于一个匿名函数的,如。一个没有名字的函数。即使技术上不正确,闭包的行为仍然与函数相同,只有一些额外的功能。
闭包只不过是 Closure 类的一个对象,它通过声明一个没有名字的函数来创建。例如:
<?php
$myClosure = function() {
echo 'Hello world!';
};
$myClosure(); // Shows "Hello world!"
请记住,$myClosure
是 Closure
的一个实例,以便你了解你可以真正做到的事情(参见 http://fr2.php.net/manual/en/class.closure.php )
你需要一个 Closure 的经典案例就是你必须给一个函数提供一个 callable
,例如 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); // Will show Stan first, then John and finally Tom