将更大的Laravel 5项目分解为模块的正确方法是什么?

iam*_*bin 5 php module laravel laravel-5

我正在使用Laravel 5开发一个PHP项目,我正在考虑为它设置一个不同的文件夹结构.

标准的Laravel文件夹结构是这样的:

/app
   /commands
   /Http
      /Controllers
      /Middleware
      Kernel.php
      routes.php
   /Providers
   Model.php
/config
/resources
etc...
Run Code Online (Sandbox Code Playgroud)

但是,当项目变得更大并且您有许多控制器/存储库/模型等时.这种结构会破裂.

例如:如果你必须挖掘你的路线,找到哪个控制器负责,在一大组控制器中找到那个控制器,找出它做了什么,找出其他的可能,在管理面板中找到一个bug并不是很容易其他大型文件夹中的负责类,依此类推.简而言之:这是一团糟.

我一直在寻找将结构分解为模块的方法.我想出办法,但我不确定这是不是一个好方法.

我会为每个功能创建一个文件夹并将所有相关代码放在一起.例如:

/app
   /Admin
      /Controllers
      /Requests
      /Models 
      routes.php
   /Products
      /Controllers
      /Requests
      /Models
      routes.php
Run Code Online (Sandbox Code Playgroud)

等(你明白了)

我不必从标准的RouteServiceProvider.php初始化1路由器,而是为每个模块编写一个ServiceProvider,并从那里开始所有单独的路由.所以在这种情况下,我会有一个AdminServiceProvider和一个ProductServiceProvider,每个都需要在自己的子目录中使用routes.php文件(并使用它们自己的控制器命名空间).

这似乎解决了我的情况,但我想知道我是否会遇到这种设置的麻烦.我在网上找到的所有例子都坚持标准结构.谁能告诉我这是否是一个体面的方式呢?或者有人有另一种方法吗?

Mar*_*łek 6

这是你提出的一个好方法,但没有必要自己做.在我工作的一个项目L5的时刻使用模块-他们每个人都有的资源库,模型,自己的路由文件等目录我使用含咖啡因的模块


use*_*426 5

我也相信结构看起来不错。我还会添加一个额外的核心或基础文件夹,其中将包含基类和可重用组件,以确保您在单独的“模块”中没有重复的代码