PHP匿名函数(闭包)的使用

匿名函数简介

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");

发表评论

邮箱地址不会被公开。 必填项已用*标注