PHP匿名函数

22次阅读
没有评论

共计 976 个字符,预计需要花费 3 分钟才能阅读完成。

什么是匿名函数?

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

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

在 PHP 4 最早称 callback,PHP 5.3 引入 closure 与 anonymous function,PHP 5.4 则新增 callabletype hint。
所以在 PHP 中,callback、closure、anonymous function,与 callable,事实上指的是同一件事情,但因为底层用的都是 Closure 物件,通常统称为 closure。

匿名函数变量

<?php
$greet = function($name)
{printf("Hello %s\r\n", $name);
};
$greet('World');
$greet('PHP');
#result
#Hello World
?>

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

从父作用域继承变量

$message = 'hello'
$example = function () use ($message) {var_dump($message);
};
echo $example();
#result
#hello

YII2 中 ,在视图 GridView 挂件中,自定义属性如果想获取外部的值,就需要使用此方式

$message = 'new message'
 <?= GridView::widget([
                'dataProvider' => $dataProvider,
                    [
                        'format'=>'raw',
                        'attribute' => 'order_conversion',
                        'value' => function($data) {
                            #这里获取不到 message 的值.
                            return $message;
                        }
                    ],
                    [
                        'format'=>'raw',
                        'attribute' => 'order_conversion',
                        #这里是正确写法
                        'value' => function($data) use ($message) {
                            return $message;
                            return  $data->order_conversion . '%';
                        }
                    ],
 ?>
正文完
 0
admin
版权声明:本站原创文章,由 admin 于2018-04-17发表,共计976字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码