You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 02:35:01