如何避免 Laravel 中的 HMVC 设计模式?

How do I avoid HMVC design pattern in Laravel?

所以我一直在阅读 从学徒到 Artisan by Taylor Otwell, Laravel 作者

我遇到了这个 'mantra':HMVC 通常表示设计不佳

这是真的...

Taylor 也建议

Feel the need to call controllers from other controllers? This is often indicative of poor application design and too much business logic in your controllers. Extract the logic into a third class that can be injected into any controller.

而且我好像还没有找到这样的方法..

如何避免 HMVC 并将逻辑提取到可以注入任何控制器的第三个 class?

我想出了一个巧妙的方法,它似乎帮助我加快了工作流程...

我认为我做的这个替代方案可以替代 HMVC,以及使用控制器的传统方式......就像现在控制器一样,但在某些地方注入了我们的 - 我所说的 - 'motors'。

查看我在 coderwall 上的文章,我在那里完成了整个过程。

通读它,希望它能提供一种更好的做事方式,从模型开始到控制器结束。

但是,如果您希望按照自己的方式进行,请确保需要在两个控制器之间共享的内容以更整洁的方式分层共享,正如泰勒建议的那样,通过注入共享。

例如,您在 AdminsController 中,您觉得需要从 UsersController 中调用一个动作,只需将该动作及其兄弟姐妹变成第三个 class,然后在你的 AdminsController

//AdminsController
 
 use ThirdClass;
  
public function __construct(ThirdClass $mything)
{
    $this->myThirdClass = $mything;
}

public function mySharedAction()
{
    $this->myThirdClass->mySharedActionFromUsersController();
}

也是这样。

更新

如果您阅读了我在 coderwall 上的文章,我在上面提到的那篇文章,我制作了一个小包,可以在其中生成所有提到的组件。

github

查看