将变量注入现有闭包范围的方法?

non*_*enz 2 php reflection closures

有没有办法将变量"注入"到闭包的范围内?我想要做的是这样的:

$c = function($x){echo $x.$y;};
$y = 'RLY?';
$c = inject_var($c,$y);
$c('O ');
Run Code Online (Sandbox Code Playgroud)

另一种方式可能是这样的:

$c = function($x){echo $x.$y;};
$c = extend_paramlist($c,'y');
$c('O ','RLY?');
Run Code Online (Sandbox Code Playgroud)

我认为在PHP闭包中注入代码是一种方式,但有一种更简单的方法,因为我只想扩展闭包的参数列表,而不是代码.我知道use(),但我想在定义闭包后"注入"变量,我不想全局.

lin*_*ogl 19

也许你想要的是use一个闭包的子句:

$y = 'RLY?';
$c = function($x) use($y) { echo $x.$y; };
$c('O ');
Run Code Online (Sandbox Code Playgroud)

或者,如果您真的想扩展参数列表,请正确执行:

$c = function($x,$y){ 
        $f = function($x) use($y) {echo $x.$y; };
        $f($x);
     };
$c('O ','RLY?');
Run Code Online (Sandbox Code Playgroud)