首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过继承实现Laravel公共服务

通过继承实现Laravel公共服务
EN

Stack Overflow用户
提问于 2018-06-28 16:48:30
回答 1查看 327关注 0票数 5

有个问题。

我有一堆控制器正在使用特定的服务集。我想知道是否有可能/正确地利用继承来避免将它们一直注入控制器。这就是我计划要做的。

代码语言:javascript
复制
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();
    }
}

这是个好主意吗?真是个坏主意?为什么或者为什么不?我认为这样可以避免将公共服务一次又一次地注入控制器。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-04 10:46:52

问题:

我想知道是否有可能/正确地利用继承来避免将它们一直注入控制器。

答案:

  1. 是的,它是有可能的,而且利用继承是正确的,因为接下来,您将保持控制器的干净--这意味着您可以在控制器中拥有函数,但是该函数将导致实现不同的函数或从不同的类继承不同的函数。

问题:

这是个好主意吗?

答案:

  1. 显然,是的--正如我前面提到的,保持控制器干净是可以遵循的最佳实践,因为您的方法将与业务逻辑分离,在业务逻辑中,您实现了所有的获取、发布和计算,而由于您的控制器是干净的,并且所有方法动作都从不同的类返回,例如(正确或错误)。

问题:

为什么或者为什么不?

答案:

  1. 由于我已经解释了该部分的大部分内容,我想进一步建议您使用存储库模式,因此,基本上说存储库这个词我的意思是:
代码语言:javascript
复制
- A source code repository is a file archive and web hosting facility    where a large amount of source code, for software or for web pages,    is kept, either publicly or privately. They are often used by open-source software projects and other multi-developer projects to handle various versions.

在laravel中,您可以遵循存储库模式来编写项目代码,这是目前找到的最佳实践。

您也可以在laravel存储库模式。上进行google搜索。

我有一个例子可以让你理解这。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51087948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档