匿名函数简介
PHP手册:匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。
闭包可以从父作用域中继承变量。 任何此类变量都应该用 use 语言结构传递进去。
function () use () {}
简单示例
<?php
$a = 1;
$closure = function () use ($a) {
echo $a;
};
$closure();
?>
运行结果为:
1
更复杂的例子
$message = 'hello';
// 没有 "use"
$example = function () {
var_dump($message);
};
echo $example();
// 继承 $message
$example = function () use ($message) {
var_dump($message);
};
echo $example();
// 继承变量的值来自函数定义时的值,而不是调用时的值
$message = 'world';
echo $example();
// Reset message
$message = 'hello';
// 继承按引用调用
$example = function () use (&$message) {
var_dump($message);
};
echo $example();
// 父范围中更改的值反映在函数调用中
$message = 'world';
echo $example();
// 闭包也可以接受常规参数
$example = function ($arg) use ($message) {
var_dump($arg . ' ' . $message);
};
$example("hello");