konekt/concord

Concord 是一个用于构建模块化 Laravel 应用的 Laravel 扩展

1.15.0 2024-03-15 10:34 UTC

README

Concord 是一个 Laravel 扩展,它可以帮助您在 Laravel 内置服务提供程序的基础上构建 Laravel 应用的模块

Tests Packagist version Packagist downloads StyleCI Code Quality MIT Software License

Concord 最初是一个 Laravel 包。它还提供了一些约定,帮助您更好地组织复杂的系统。

版本兼容性

基础知识

模块化架构就是您所想的那样 - 通过将问题分解成更小的可管理模块来管理问题的复杂性。 -- Param Rengaiah

Concord 本身(这个库)管理模块。

Concord 模块 是围绕一个单一主题构建的业务逻辑的独立部分。

从使用角度来看,有两种类型的模块

  • 应用内模块,
  • 外部模块。

Concord 完全不了解这种差异,但它们代表了两种不同的模块化方法。

应用内模块

  • 它们是应用程序代码库的一部分;
  • 位于 app/Modules/<ModuleName>
  • 解耦的要求不是很严格;
  • 代码重用和定制不是一方面。

外部模块

  • 它们是库;
  • 通常使用 composer 管理,因此它们位于 vendor/ 文件夹;
  • 应该尽可能地解耦;
  • 包含应用程序的基本或样板功能;
  • 它们被设计成由多个、不同的应用程序使用;
  • 它们的行为可以在应用程序中进行定制。

这两种模块类型始终与 Laravel 和 Concord 结合在一起;

安装

请参阅文档的 安装部分

创建您的第一个模块

php artisan make:module ShinyModule

这将创建一个位于 app/Modules/ShinyModule 文件夹中的非常基本的内置模块。

为了激活模块,请将其添加到 config/concord.php 文件中

return [
    'modules' => [
        App\Modules\ShinyModule\Providers\ModuleServiceProvider::class
    ]
];

文档

有关所有详细信息,请参阅 Concord 文档

2.0 版本计划

  • Artisan 控制台命令名称将被去品牌化(例如 concord:modules -> module:list
  • 中央 config/concord.php 文件将被删除或拆分
    • 模块可以指定自己的配置文件名(如正常的 Laravel 包);
    • 因此,多个模块可以共享配置文件(参见 vanilo.php);
    • 如果我们保留 concord.php,则它将包含 concord 特定的设置。
  • 模块将以正常包的形式加载,使用自动发现而不是使用 concord 列出模块。
  • 为服务提供程序提供自定义名称,例如 CartServiceProvider 而不是 ModuleServiceProvider。
  • 关于上一个项目的问题是如何对应用内模块做同样的事情。
  • 重新思考盒子与模块的概念。
  • 从文档中删除多余的条目。
  • 删除助手(?)。
  • 删除自定义视图命名空间支持。
  • 我们是否将使用控制器覆盖?
  • 添加 make:request、make:model、make:enum 命令,这些命令使用接口、代理等来构建。
  • 修复 route 参数中的 AddressType -> address_type 类型的样式问题。