我试图编写一些嵌套的PHP匿名函数,结构就是你在下面看到的结构,我的问题是:如何使它无错误地工作?
$abc = function($code){
$function_A = function($code){
return $code;
};
$function_B = function($code){
global $function_A;
$text = $function_A($code);
return $text;
};
$function_B($code);
};
echo $abc('abc');
输出为致命错误:此行中的函数名称必须为字符串:
$text = $function_A($code);
此消息对我没有任何意义:(
答案 0 :(得分:10)
这里的问题是你的$function_A
没有在全局范围内定义,而是在$abc
的范围内。如果您愿意,可以尝试使用use
将$function_A
传递到$function_B
的范围:
$abc = function($code){
$function_A = function($code){
return $code;
};
$function_B = function($code) use ($function_A){
$text = $function_A($code);
return $text;
};
$function_B($code);
};
答案 1 :(得分:2)
在PHP中,要将除$this
和superglobals之外的变量传递给匿名闭包,您必须使用use
语句。
<?php
$abc = function($code){
$function_A = function($code){
return "Code: {$code}";
};
$function_B = function($code) use ($function_A) {
$text = $function_A($code);
return $text;
};
return $function_B($code);
};
echo $abc('abc');
以下是一个有效的例子:http://3v4l.org/u1CtZ