sethsandaru/laravel-hmvc-sample

Laravel HMVC结构示例项目。

安装: 65

依赖: 0

建议者: 0

安全: 0

星标: 30

关注者: 1

分支: 14

开放问题: 1

类型:项目

v1.0.0 2018-10-17 04:39 UTC

This package is auto-updated.

Last update: 2024-09-23 15:30:54 UTC


README

这是一个示例项目,用于构建和使用Laravel 5.7+、6、7、8的HMVC结构。

什么是HMVC?

您可以在以下位置找到更多信息:[HMVC - 维基百科](https://en.wikipedia.org/wiki/Hierarchical_model%E2%80%93view%E2%80%93controller)

主要优点(M.O.R.E)

  • 模块化:减少应用程序不同部分之间的依赖关系。
  • 组织:为每个相关的三联组创建一个文件夹,可以使工作量更轻。
  • 可用性:由于设计本身,几乎可以重用每段代码。
  • 可扩展性:使应用程序更易于扩展,同时不牺牲维护的简便性。

其他优点

  • 可以轻松实现微服务。将模块拆分成服务会非常快。
  • 在项目本身中,就像是一个Mono-Repo策略。

Laravel HMVC结构 - 此项目

  • 顶部 - 基础MVC - Laravel应用
    • 模块1 MVC - 小型Laravel应用
    • 模块2 MVC - 小型Laravel应用
    • ...
    • 模块n MVC - 小型Laravel应用

模块结构

  • 模块名称
    • 配置:您的配置文件在这里。
    • Http
      • 控制器:您的控制器在这里。
      • 请求
    • 语言:您的语言文件在这里(翻译)
      • en
      • vi
      • ...
    • 库:您的特殊库类文件在这里。
    • 模型:您的模型在这里。
    • 视图:您的视图文件在这里。
    • 路由:模块的所有路由
      • routes.php:此模块的路由。
    • 服务:您的服务处理程序在这里
    • 提供者:服务提供者
    • 策略:模块的策略

所以您可以看到,模块只是一个小型Laravel应用程序。您不必创建完整结构才能使其工作。

最重要的是:ServiceProvider。没有它,我们无法启动模块。

如何创建新的模块?

  1. app/Modules内部创建您的模块文件夹
  2. 在您的模块文件夹内部,创建您需要的文件夹,如上面的结构所示(ServiceProvider、Views等)
  3. 创建一个ServiceProvider并将其注册到configs/app.php
  4. 测试您的模块

如何访问视图/语言/配置?

模块文件夹名称是别名,以便我们加载视图、语言文本等。
示例:我有Home模块。别名:home

加载视图

我们需要在开头插入模块别名,如下所示

return view('home::home.view', $arrData);

获取语言(翻译)文本

trans('home::home.hello'); // Hello
__('home::home.world'); // World

获取配置值

就像正常的配置一样,您可以通过别名获取您的配置,如下所示

config('home.text'); // get 'text' in home alias

迁移

它是如何工作的?

当您运行php artisan migrate时,它将像这样运行

- Base/Core (database/migrations) first
- Thought each module
    - Module 1
    - Module 2
    - ...
    - Module n

创建迁移

只需在<ModulePath>/Migrations中创建迁移文件(Laravel格式)。

注意

  • 文件名必须是:yyyy_MM_dd_hhmmss_class_name_here.php(遵循Laravel格式)

控制台命令注册

  • app/Modules/<insert_module_name/Console/Commands中创建您的命令
  • 打开您的模块的ServiceProvider,在boot方法中注册它,如下所示
$this->commands([
    MyCommand::class,
]);

注意:较旧的Laravel版本可能没有这个机会。当前项目使用Laravel 5.7

总结

如果您有任何问题或疑问,请随时向我提问。

版权 © 2018-2021 by Seth Phat.