php 闭包实例解析

匿名函数(anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作匿名函数(callback)参数的值。当然,也有其它应用的情况。

匿名函数目前是通过 Closure 类来实现的。

闭包函数也可以作为变量的值来使用。PHP 会自动把此种匿名函数转换成内置类 Closure 的匿名函数实例。把一个 closure 对象赋值给一个变量的方式与普通变量赋值的语法是一样的,最后也要加上分号:

闭包可以从父作用域匿名函数变量。 任何此类变量都应该用 use 语言结构传递进去。 PHP 7.1 起,不能传入此类变量: superglobals、 $this 或者和参数重名。

具体形式如下:

立即学习PHP免费学习笔记(深入)”;

$a = function($arg1, $arg2) use ($variable) {   // 声明函数闭包到变量$a, 参数为$arg1, $arg2 ,该闭包需使用$variable变量  }

具体用法实例如下:

<?php $result = 0;     $one = function()  { var_dump($result); };     $two = function() use ($result)  { var_dump($result); }; // 可以认为 $two这个变量 本身记录了该函数的声明以及use使用的变量的值     $three = function() use (&$result)  { var_dump($result); };     $result++;     $one();  // outputs NULL: $result is not in scope  $two();  // outputs int(0): $result was copied  $three();  // outputs int(1)  ?>

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享