gpt4 book ai didi

php - Laravel 单例无法跨 Controller /ViewComposer 工作

转载 作者:行者123 更新时间:2023-12-04 13:48:30 32 4
gpt4 key购买 nike

在 Laravel 中,我有一个类可用于服务 Controller ,在 Controller 操作中进行一些更改,然后使用 ViewComposer 进行渲染。

我以前做过几次没有问题,但由于某种原因,这次我通常的方法不起作用 - 显然我在做一些不同的事情,我开始怀疑我从根本上误解了我正在做的事情的一个方面.

我有一个带有这个 register() 方法的 ServiceProvider:

public function register()
{
$this->app->singleton(HelperTest::class, function ($app) {
$pb = new HelperTest();

$pb->test = "jokes on you batman";

return $pb;
});
}

然后在我的 Controller 中,我正在执行以下操作:
private $helper;

public function __construct(HelperTest $pb)
{
$this->helper = $pb;
$this->helper->test = "hahah";
}

然后我有一个 viewcomposer 执行以下操作:
private $helper;

public function __construct(HelperTest $pb)
{
$this->helper = $pb;
}

public function compose(View $view)
{
$view->with('output', $this->helper->test);
}

当我打电话时 {{ $output }}在 Blade View 中,我希望看到 hahah ,但我得到 jokes on you batman .

我的调试表明,这三个方法肯定都被调用了。在我看来,ViewComposer 出于某种原因正在实例化它自己的新类实例。我究竟做错了什么?

谢谢!

最佳答案

执行 php artisan optimize在您的控制台上,这将为您的应用程序生成一个优化的类加载器,然后检查您是否可以找到您的类 HelperTest注册于 services.phpboostrap/cache .直到 HelperTest未在那里注册,Laravel IoC 无法解析您的类。

关于php - Laravel 单例无法跨 Controller /ViewComposer 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39084811/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com