匿名函数

参考

参考的手册,大部分copy手册学习一下。

匿名函数

定义

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

匿名函数一般被回调函数使用。

回调函数对匿名函数的调用

一些函数如call_user_func()usort()可以接受用户自定义的回调函数作为参数。回调函数不止可以是简单函数,还可以是对象的方法,包括静态类方法。

例子:

<?php
echo preg_replace_callback('~-([a-z])~', function ($match) {
    return strtoupper($match[1]);
}, 'hello-world');
// 输出 helloWorld
?>

匿名函数变量赋值示例

简单例子

<?php
$greet = function($name)
{
    printf("Hello %s\r\n", $name);
};

$greet('World');
$greet('PHP');
?>

使用USE

  • 闭包可以从父作用域中继承变量。 任何此类变量都应该用 use 语言结构传递进去。 PHP7.1起,不能传入此类变量:superglobals$this或者和参数重名。
<?php
$message = 'hello';

$example = function () {
    var_dump($message);
};
#echo $example();  // Notice: Undefined variable: message 

$example = function () use ($message) {
    var_dump($message);
};
echo $example();  // string(5) "hello"


$message = 'world'; 
echo $example();   //string(5) "hello"

$example = function ($arg) use ($message) {
    var_dump($arg . ' ' . $message);
};
$example("hello");   // string(11) "hello world"
?>

results matching ""

    No results matching ""