PHP 闭包的基本用法

示例

一个封闭的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