请教一个laravel $app->singleton的问题

我自定义了一个类

class Custom
{
    public function hello(?string $content = null ): void
    {
    echo $content;
    }
}

我在服务提供者里将它注册后

public function register(): void
{
    $this->app->singleton('custom',fn() => new Custom());
}

第一次调用是经过中间件调用,打印结果为null
第二次调用是中间件验证正常后,在控制器里使用

public function index()
{
    app('custom')->hello('你好');
}

为啥结果还是null?有大佬知道吗。我知道它返回的是同一个实例,但是我调用的同一个方法,参数不同。为什么同一次请求的第二次调用参数无效呢?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 7

正常来讲provider在过中间件之前注册方法都已经跑过了,而app(‘custom’)没报不存在异常说明已经注册进去了,建议贴出更多代码或者自己打dd或者断点xdebug

1年前 评论
浪里小白龙 (楼主) 1年前

测试,最好用返回数据,用正常的laravel方式输出,不要来不来就是echo输出测试啊。laravel会做处理,不一定echo后就是正常的看得到结果

1年前 评论
浪里小白龙 (楼主) 1年前
deatil (作者) 1年前
随波逐流

建议创建一个空项目测试, 盲猜你的代码有污染。

1年前 评论

一摸一样的代码 laravel6 控制器正常输出 “你好”

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!