konekt / concord
Concord 是一个用于构建模块化 Laravel 应用的 Laravel 扩展
1.15.0
2024-03-15 10:34 UTC
Requires
- php: ^8.0
- illuminate/console: ^9.2|^10.0|^11.0
- illuminate/support: ^9.2|^10.0|^11.0
- konekt/enum: ^2.1|^3.0|^4.0
- konekt/enum-eloquent: ^1.7
Requires (Dev)
- orchestra/testbench: ^7.0|^8.0|^9.0
- phpunit/phpunit: 9 - 10
- dev-master / 2.x-dev
- 1.x-dev
- 1.15.0
- 1.14.0
- 1.13.1
- 1.13.0
- 1.12.0
- 1.11.0
- 1.10.x-dev
- 1.10.2
- 1.10.1
- 1.10.0
- 1.9.x-dev
- 1.9.0
- 1.8.x-dev
- 1.8.0
- 1.7.x-dev
- 1.7.0
- 1.6.x-dev
- 1.6.0
- 1.5.x-dev
- 1.5.1
- 1.5.0
- 1.4.x-dev
- 1.4.0
- 1.3.x-dev
- 1.3.1
- 1.3.0
- 1.2.0
- 1.1.0
- 1.0.0
- 0.9.10
- 0.9.9
- 0.9.8
- 0.9.7
- 0.9.6
- 0.9.5
- 0.9.4
- 0.9.3
- 0.9.2
- 0.9.1
- 0.9.0
This package is auto-updated.
Last update: 2024-09-16 06:38:02 UTC
README
Concord 是一个 Laravel 扩展,它可以帮助您在 Laravel 内置服务提供程序的基础上构建 Laravel 应用的模块。
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 类型的样式问题。