php匿名函数和闭包

JavaScript中匿名函数和闭包可以说是非常灵活的特性了,它的使用可以帮助快速写出很简洁的代码。其实呢,PHP也有匿名函数和闭包,用法如下:


1.匿名函数

# 声明一个函数
$test_closure1 = function($arg1, $arg2) {
    return $arg1 . 'hello world!';
}

# 声明一个函数,并将外部变量传入函数
$global_param = 'martin';
$test_closure2 = function($arg1, $arg2) use($global_param){
    return $arg1 . 'hello world!' . $global_param;
}

# 调用
call_user_func_array($test_closure1, ['您好', '大家好']);
call_user_func_array($test_closure2, ['您好', '大家好']);

2.闭包

//例子1:在函数里定义一个匿名函数,并且调用它
function test1() {
    $func = function( $str ) {
        echo $str;
    };
    $func( 'hello world! );
}

//例子2:在函数中把匿名函数返回,并且调用它
function test2() {
    $func = function( $str ) {
        echo $str;
    };
    return $func;
}

# 调用
test1();
$test2_func = test2();
$test2_func('hello world');

php的匿名函数和闭包还不像JavaScript的匿名函数闭包那么灵活好用,但有时候也是可以帮助你解决一些特殊的场景的,期待它以后会更加好用。

你可能感兴趣的:(php匿名函数和闭包)