【问题标题】:How do I avoid HMVC design pattern in Laravel?如何避免 Laravel 中的 HMVC 设计模式?
【发布时间】:2015-08-03 11:46:28
【问题描述】:
所以我一直在阅读从学徒到工匠 Taylor Otwell,Laravel 作者
我发现了这个“口头禅”:HMVC 通常表示设计不佳。
这是真的……
Taylor 也提出了建议
觉得需要从其他控制器调用控制器?这往往预示着贫穷
控制器中的应用程序设计和过多的业务逻辑。将逻辑提取为
可以注入任何控制器的第三类。
而且我似乎还没有找到这样的方法..
如何避免 HMVC 并将逻辑提取到可以注入任何控制器的第三类?
【问题讨论】:
标签:
php
laravel
design-patterns
model-view-controller
hmvc
【解决方案1】:
我想出了一个巧妙的方法,它似乎帮助我加快了工作流程...
我认为我所做的这个替代方案可以取代 HMVC,以及使用控制器的传统方式......因为现在控制器只是我们的 - 我所谓的 - '电机' 被注入的地方。
查看我在 coderwall 的文章,我在其中经历了整个事情。
通读一遍,希望它能提供一种更好的做事方式,从模型开始到控制器结束。
但是,如果您希望按照自己的方式进行,请确保需要在两个控制器之间共享的内容以更简洁的方式共享,正如 taylor 建议的那样,通过注入共享。
例如,您在AdminsController 中,并且您觉得需要从UsersController 调用一个动作,只需将该动作及其同级设置为第三类,并在您的AdminsController 中
//AdminsController
use ThirdClass;
public function __construct(ThirdClass $mything)
{
$this->myThirdClass = $mything;
}
public function mySharedAction()
{
$this->myThirdClass->mySharedActionFromUsersController();
}
就这样。
更新
如果你看过我在 coderwall 上的文章,也就是我上面提到的那篇,我已经制作了一个小包,可以在其中生成所有提到的组件。
查看github