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


What is the correct way to break a larger Laravel 5 project into modules?

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

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

/app
   /commands
   /Http
      /Controllers
      /Middleware
      Kernel.php
      routes.php
   /Providers
   Model.php
/config
/resources
etc...

但是,当项目变大并且您有很多控制器/存储库/模型等时。这种结构将要破裂。

例如:如果您必须挖掘路由,找到负责的控制器,在

大量控制器中找到该控制器,找出它的作用,在其他大文件夹中找出其他可能负责的类,等等,那么在管理面板中找到错误并不容易。简而言之:这是一团糟。

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

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

/app
   /Admin
      /Controllers
      /Requests
      /Models 
      routes.php
   /Products
      /Controllers
      /Requests
      /Models
      routes.php

等等(你明白了)

我必须为每个模块编写一个服务提供者,并从那里启动所有单独的路由,而不是从标准 RouteServiceProvider.php 初始化 1 个路由器。因此,在这种情况下,我将有一个AdminServiceProvider和一个ProductServiceProvider,它们都需要在自己的子目录中(以及自己的控制器命名空间)中的route.php文件。

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

这是您提出的一个好方法,但没有必要自己做。目前,我正在开发一个使用模块的 L5 项目 - 每个模块都有存储库、模型、自己的路由文件等目录。我正在使用含咖啡因的模块

我也

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

  • 您还可以在 2014 年 9 月的 Laracon: Laracon 2014: 戴尔·里斯 - 突破模具

  • 另请查看 10 月 CMS 和 Doptor 的来源CMS(自称是模块),你可能会收集一两件事。(有顺便说一下,两者都没有使用)。

  • 否则,做我所做的和谷歌开源Laravel项目。你从他们那里得到了很好的洞察力。特别是那些特色或有组织,社区不断壮大。