• PHP7的 Closure::call() 有着更好的性能,将一个闭包函数动态绑定到一个新的对象实例并调用执行该函数。
    • 和bind()、binTo() 相比。一定要记住,call() 最后还调用了函数,所以前二者的返回值是一个闭包对象,而call()不是。

    使用例子:

    1. <?php
    2. class A
    3. {
    4. private $x = 1;
    5. }
    6. // PHP7 之前
    7. $fun1 = function () {
    8. return $this->x;
    9. };
    10. // 将闭包函数绑定到类A上
    11. $res1 = $fun1->bindTo(new A(), 'A'); // 此时返回的的$res1就是一个闭包,
    12. // 或者说是一个匿名函数更准确(在PHP中匿名函数就是闭包)
    13. var_dump($res1()); // D:\wamp64\www\numb\2020-3-26\demo-03.php:22:int 1
    14. // PHP7+ 代码
    15. $fun2 = function () {
    16. return $this->x;
    17. };
    18. $res2 = $fun2->call(new A());
    19. var_dump($res2); // D:\wamp64\www\numb\2020-3-26\demo-03.php:22:int 1