laravel中,我在父类中注入一个对象,然后我想根据不同的子类注入这个对象的不同实现,有什么方法吗?

发布于 2022-09-04 03:46:05 字数 431 浏览 16 评论 0

我在父类中注入一个对象,然后我想根据不同的子类注入这个对象的不同实现.

因为父类就要用这个对象,所以我不能在子类中在注入,但是我需要不同的实现.

我控制注入的代码:

clipboard.png

这样写不行,因为对象在父类中就注入了,父类中注入的地方:

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

黯然 2022-09-11 03:46:05

方法1:不要在父类的 action 方法中直接注入实例,父类从别的方法获取相关实例,子类重写这个方法并返回自己注入的实例。例如:

父类:

public function update()
{
    $this->validate($this->getRequest(), ...);
}

protected function getRequest()
{
    return app(Request::class);
}

子类:

protected function getRequest()
{
    return app(RoleRequest::class);
}

方法2:使用 trait 。

方法3:在 __construct 中注入。类似方法1,父类的 __construct 不依赖任何参数,子类的 __construct 随意依赖。

花伊自在美 2022-09-11 03:46:05

为什么设计成这个样子?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文