创建匿名函数
创建匿名函数很简单,其语法结构如下所示:
function (参数列表) {
…
}
可以看出,匿名函数与普通函数非常类似,同样可以接受参数,并且可以有返回值,只是匿名函数在声明时会省略函数名。
【示例】下面通过一个简单的示例来演示一下如何创建匿名函数,代码如下所示:
- <?php
- $url = function (){
- return 'http://c.biancheng.net/php/';
- };
- echo $url();
- ?>
运行结果如下:
http://c.biancheng.net/php/
通过上面的示例可以看出,匿名函数可以作为变量的值来使用。此时 PHP 会自动把此种表达式转换成内置类 Closure 的对象实例。把一个 closure 对象赋值给一个变量的方式与普通变量赋值的语法是一样的,最后也要加上分号;
。 实际开发中,我们通常将匿名函数当做函数或方法的回调使用,在很多 PHP 内置函数中都会用到匿名函数,比如 array_map 和 preg_replace_callback,示例代码如下:
- <?php
- $arr = [1,2,3,4,5,6];
- $result = array_map(function ($num) {
- return $num*$num;
- }, $arr);
- echo '<pre>';
- print_r($result);
- ?>
运行结果如下:
Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 [5] => 36 )
use 关键字
使用 use 关键字,闭包函数可以实现从父级作用域中继承变量,但是从 php7.1 开始,不支持继承预定义变量和 $this。