PHP匿名函数(闭包函数)

     分类:     有: 0 条评论

php匿名函数(闭包函数)

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

应用场景

1.作为回调函数使用,写法更简洁
2.如果是一次性使用的函数,不能被重用,可以使用闭包函数,不需要重复定义

匿名函数定义

//不需要填写方法名
function($name)
{
    printf("Hello %s\r\n", $name);
};

//从父作用域继承变量

$text = 'helloWorld';

//使用use() 进行引用
$anonymousFunc = function() use($text){
     echo $text;
};
$anonymousFunc();//此处调用了匿名函数  输出 helloWorld

//传参
$anonymousFunc = function($text){
     echo $text;
};
$anonymousFunc($text);//此处调用了匿名函数  输出 helloWorld

使用场景实例

preg_replace_callback

preg_replace_callback 函数执行一个正则表达式搜索并且使用一个回调进行替换。

//匿名函数有个主要用途就是作为回调函数很方便

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

//不使用匿名函数则需要这样写,需要自己定义个一个函数,再通过字符串传值

// 回调函数
function next_year($match)
{
    return strtoupper($match[1]);
}
echo preg_replace_callback('~-([a-z])~', "next_year", 'hello-world');
// 输出 helloWorld

array_walk

也是作为回调函数使用

$a=array("a"=>"red","b"=>"green","c"=>"blue");

array_walk($a,function ($key,$value,$p){echo "$key $p $value\r\n";},"has the value");

匿名函数变量赋值示例

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

$greet('World');
$greet('PHP');
(●゚ω゚●)