正在名目中,难免会遇到闭包的方式,那末正在闭包中,变量的作用域究竟是怎样样的呢。上面有几个简略的例子。
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 闭包
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
抱歉,评论功能暂时关闭!