php匿名函数变量作用域问题

图片描述

如图,如何更优雅地访问匿名函数外的$data?

阅读 2.8k
3 个回答

function() use($data){}
更优雅一些,但需要注意的是继承过来的$data值与这个闭包声明的上下文有关
例如:

[1]
$data = 1;
function() use($data){}//此时继承的变量值为1
[2]
$data = 1;
function() use($data){}
$data = 2;
此时再调用闭包函数,$data的取值为其声明时的上下文的值,值为1
$data = 1;
$x = function() use ($data){
    var_dump($data);
    exit;
};
$data = 2;
function ttt($a)
{
    $a();
}
ttt($x);

从父作用域中继承变量 用use

function()use($data){}

补充一下,global和$GLOBALS超全局变量也可以读到外部定义的全局变量,了解一下

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题