holdmyglass / zapcraft

一个用于为任何实体生成必要文件的 Laravel 包

v1.0.1 2023-12-19 13:18 UTC

This package is auto-updated.

Last update: 2024-09-19 14:59:52 UTC


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愉快编码!