holdmyglass / zapcraft
一个用于为任何实体生成必要文件的 Laravel 包
Requires
- php: ^8.1
- nwidart/laravel-modules: ^10.0
README
在开发过程中花费了大量时间后,我发现了一个反复出现的模式——我反复执行相同的任务。每次创建新的模型时,我发现自己都在生成内容相同但相似的文件。为了简化这个重复的过程并使我的工作流程更高效,我决定创建 ZapCraft Laravel 包。
ZapCraft 考虑到我最喜欢的编码结构进行设计,为自动化创建新模型所需的基本文件和组件提供了解决方案。建立在信任的 nwidart/laravel-modules
包之上,ZapCraft 引入了功能,可以轻松地为 Laravel 项目的任何实体生成模型、迁移、控制器、仓库、接口、DTO、服务、请求、资源和路由。
安装
要安装 ZapCraft,请使用以下 Composer 命令
composer require holdmyglass/zapcraft
入门
ZapCraft 简化了在 Laravel 应用程序中创建和组织组件的过程。此包依赖于 nwidart/laravel-modules
包。如果您已经安装了此包,则无需担心。如果您尚未安装它,ZapCraft 包将自动安装 laravel-modules 包。
自动加载
默认情况下,模块类不会自动加载。要使用 psr-4 自动加载它们,请将以下行添加到根 composer.json 文件中 autoload 部分的末尾
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/",
"Modules\\": "Modules/"
}
}
现在,在您的 Laravel 应用程序根目录下运行 composer dump-autoload
。
命令
sail php artisan zapcraft:all Product --module=Sale
sail php artisan zapcraft:model Product --module=Sale -m
sail php artisan zapcraft:migration Product --module=Sale
sail php artisan zapcraft:controller Product --module=Sale
sail php artisan zapcraft:repository Product --module=Sale
sail php artisan zapcraft:interface Product --module=Sale
sail php artisan zapcraft:service Product --module=Sale
sail php artisan zapcraft:resource Product --module=Sale
sail php artisan zapcraft:collection Product --module=Sale
sail php artisan zapcraft:dto Product --module=Sale
sail php artisan zapcraft:route Product --module=Sale
第一个命令将生成所有必要的文件和类。对于其他命令,根据命令名可以清楚地了解它们能生成什么。
生成所有内容后,我们需要将接口与仓库绑定。假设我们使用以下命令生成所有内容
sail php artisan zapcraft:all Product --module=Sale
这将在 Sale 模块内部为 Product 实体创建所有文件。这将创建 ReadProductRepositoryInterface、WriteProductRepositoryInterface 和 ProductRepository 以及许多其他文件。我们需要将这两个接口与仓库绑定。打开 Modules/Sale/app/Providers/SaleServiceProvider
,在 public function register()
函数内粘贴以下内容
$this->app->bind(ReadProductRepositoryInterface::class, ProductRepository::class);
$this->app->bind(WriteProductRepositoryInterface::class, ProductRepository::class);
提示:不要忘记使用 use 语句在顶部导入这些类。
自定义
ZapCraft 设计得非常灵活和可定制。您可以根据自己的需求修改生成的文件、调整配置和适应代码。
特性
ZapCraft 提供以下特性
-
实体生成:快速为实体生成模型、迁移、控制器、仓库、接口、DTO、服务、请求、资源和路由。
-
模块结构:利用 Laravel 模块的力量来保持应用程序的整洁和可维护性。
-
一致性:通过使用ZapCraft生成标准化组件来确保代码库的一致性。
-
节省时间:通过自动化重复性任务和减少需要编写的样板代码来节省开发时间。
贡献
欢迎贡献!如果您发现任何问题或对改进有建议,请在本GitHub 仓库上创建问题或提交拉取请求。
许可证
ZapCraft是开源软件,许可协议为MIT 许可证。
支持
如果您遇到任何问题或有问题咨询,请通过GitHub 问题联系我们。
用ZapCraft愉快编码!