有没有办法将变量“注入”到闭包的范围内?我想做的是这样的事情:
$c = function($x){echo $x.$y;};
$y = 'RLY?';
$c = inject_var($c,$y);
$c('O ');
另一种方式可能是这样的:
$c = function($x){echo $x.$y;};
$c = extend_paramlist($c,'y');
$c('O ','RLY?');
我认为Inject code in a PHP closure是一种方式,但有一种更简单的方法,因为我只想扩展闭包的参数列表,而不是代码。我知道use(),但我想在定义闭包后“注入”变量,我不想全局。
答案 0 :(得分:19)
也许你想要的是闭包的use
子句:
$y = 'RLY?';
$c = function($x) use($y) { echo $x.$y; };
$c('O ');
或者,如果您真的想扩展参数列表,请正确执行:
$c = function($x,$y){
$f = function($x) use($y) {echo $x.$y; };
$f($x);
};
$c('O ','RLY?');