PHP 闭包之变量作用域-php教程

资源魔 31 0
正在名目中,难免会遇到闭包的方式,那末正在闭包中,变量的作用域究竟是怎样样的呢。上面有几个简略的例子。

e1

function test_1()
{
    $a = 'php';
    $func =  function ($b) use ($a)
    {
       // $a = 'java';
        echo $b.'_'.$a;
    };
    return $func;
}
$test = test_1();
$test('hello');

以上后果会输入 hello_php 那末能够看到 $a 被作为了变量 经过use通报给了 匿名函数 func 作为参数应用;假如去掉$a = 'java'的正文,那末以上后果会输入 hello_java

e2:将下面的函数改写为

function test_2()
{
    $a = 'php';
    $func =  function ($b) use ($a)
    {
       // $a = 'go';
        echo $b.'_'.$a;
    };
    $a = 'java';
    return $func;
}
$test = test_2();
$test('hello');

以上后果会输入 hello_php 阐明正在test_2中第二次为$a赋值的时分,并无通报的到 func函数外面去。

一样的假如去掉 $a = 'go';那末以上后果会输入 hello_go

e3:如今为$a 加之援用

function test_3()
{
    $a = 'php';
    $func =  function ($b) use (&$a)
    {
        //$a = 'go';
        echo $b.'_'.$a;
    };
    $a = 'java';
    return $func;
}
$test = test_3();
$test('hello');

以上后果会输入 hello_java 阐明正在地点援用的时分 变量 a 的值会通报到 函数func外面去。

一样的假如去掉 $a = 'go';

那末以上后果会输入 hello_go;

以上三个简略的测试,很明确的阐明的闭包外面参数的作用域。

正在不应用地点援用的时分 匿名函数的变量值,没有会跟着内部变量的扭转而扭转。(闭包的意思)

正在应用了地点援用之后,参数值会被内部函数的参数值所扭转。

更多PHP相干常识,请拜访PHP教程!

以上就是PHP 闭包之变量作用域的具体内容,更多请存眷资源魔其它相干文章!

标签: php开发教程 php开发资料 php开发自学 PHP 闭包

抱歉,评论功能暂时关闭!