Lumen测试中如何向Mock的Authenticate类传递外部变量
在Lumen中给Mock的匿名类传入外部变量
要让匿名类访问外部作用域的变量,你可以通过两种方式实现:
方式一:通过构造函数传入(推荐,符合封装原则)
将外部变量作为参数传递给匿名类的构造函数,在类内部保存为属性后使用:
$someVariable = "test"; $this->app->instance(Authenticate::class, new class($someVariable) { private $innerVariable; public function __construct($externalVariable) { $this->innerVariable = $externalVariable; } public function handle($request, $next, ...$guards) { // 在这里使用类内部的属性 // 示例:var_dump($this->innerVariable); 会输出 "test" return $next($request); } });
方式二:直接捕获外部变量
使用use关键字直接捕获外部变量,无需构造函数,适合简单场景:
$someVariable = "test"; $this->app->instance(Authenticate::class, new class use ($someVariable) { public function handle($request, $next, ...$guards) { // 直接使用捕获的外部变量 // 示例:echo $someVariable; 会输出 "test" return $next($request); } });
如果需要在匿名类内部修改外部变量的值,只需在use里给变量加上引用符号&,比如use (&$someVariable)。
内容的提问来源于stack exchange,提问作者Febertson
相关产品推荐
相关产品推荐

