微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – Laravel通过继承提供公共服务

题.

我有一堆使用某种服务的控制器.我想知道是否有可能/利用继承来保护我不必一直将它们注入控制器.这就是我计划做的事情.

class MasterController extends controller{
    public function _construct(){
            $this->userData = App::make(UserService::class)
            $this->fooData = App::make(FooService::class)
    }
}

class UserController extends MasterController {
    public function __construct(BashService $bashService){
        parent::__construct();
        $this->bashData = $bashService;
    }

    public function someFunction(){
        $something = $this->userData->doUserSomething();
    }
}

这是一个好主意吗?一个非常糟糕的主意吗?为什么或者为什么不?我认为这可能使我不必一次又一次地将常用服务注入控制器.

谢谢!

解决方法:

题:

I was wondering if it is possible/right to utilize inheritance to save me from having to inject them into controllers all the time.

回答:

>是的,这是可能的,并且利用继承是正确的
在此之后,您将保持控制器清洁,这意味着您
可以在你的控制器中有功能,但功能将导致
从不同的类实现或继承的不同函数.

题:

Is this a good idea to do?

回答:

>显然,如上所述,这是一个好主意
保持控制器清洁是可以遵循的最佳实践
因为你的方法将与业务逻辑分开
你实现所有的提取和发布和计算以及什么
因为您的控制器是干净的并且所有方法都是动作
从具有准确反应的不同类别返回,例如(真或假)
假).

题:

Why or why not?

回答:

>由于我已经解释了大部分内容,我还想进一步
建议您基本上由存储库模式
word存储库我的意思是:

>源代码存储库是一个文件存档和Web托管设施,其中包含大量源代码,用于软件或用于
网页,公开或私下保存.他们经常
由开源软件项目和其他多开发人员使用
处理各种版本的项目.

在laravel中,您可以按照存储库模式来编写项目代码
这是目前最好的做法.

您也可以在laravel repository pattern.上进行谷歌搜索

我有一个例子可以让你理解this.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐