notiv/laravel-domain-commands

用于Laravel应用的Artisan命令,利用领域驱动设计。

1.0 2021-09-18 15:30 UTC

This package is auto-updated.

Last update: 2024-09-18 22:46:15 UTC


README

安装

composer require notiv/laravel-domain-commands

CommandLoader::loadCommands() 添加到 app/Console/Kernel.php

<?php

...
+use Notiv\Console\CommandLoader;

class Kernel extends ConsoleKernel
{
    protected function commands()
    {
        $this->load(__DIR__ . '/Commands');

+       CommandLoader::loadCommands();

        require base_path('routes/console.php');
    }
}

这不是一个好的解决方案,但我不确定如何在一切完成后注册命令

"Domain\\": "app/Domain/" 添加到 composer.json

"autoload": {
  "psr-4": {
      "App\\": "app/",
+     "Domain\\": "app/Domain/",
      "Database\\Factories\\": "database/factories/",
      "Database\\Seeders\\": "database/seeders/"
  }
},

如果需要,您可以发布配置

php artisan vendor:publish --tag="domain-commands-config"

领域命令

  • make:model <domain:model>

    创建一个新的Eloquent模型类

    示例: php artisan make:model User:User

    选项

    • --force 即使模型已存在,也创建类
    • -a, --all 为模型生成迁移、seeder和factory
    • -f, --factory 为模型创建一个新的factory
    • -m, --migration 为模型创建一个新的迁移文件
    • -s, --seed 为模型创建一个新的seeder文件
    • -p, --pivot 指示生成的模型是否应该是一个自定义中间表模型
  • make:action <domain:action>

    为特定领域创建操作

    示例: php artisan make:action User:CreateUserAction

  • make:dto <domain:dto>

    为特定领域创建DTO

    示例: php artisan make:dto User:CreateUserDTO

    为了方便,您应该安装 https://github.com/spatie/data-transfer-object

    选项

    • -r, --request DTO文件具有静态fromRequest方法
  • make:cast <domain:cast>

    创建一个新的自定义Eloquent cast类

    示例: php artisan make:cast User:JsonCast

  • make:collection <domain:collection>

    为特定领域创建集合

    示例: php artisan make:collection User:UserCollection

  • make:event <domain:event>

    创建一个新的事件类

    示例: php artisan make:event User:UserCreatedEvent

  • make:enum <domain:enum>

    为特定领域创建枚举

    示例: php artisan make:enum User:UserColorEnum

  • make:listener <domain:listener>

    创建一个新的事件监听器类

    示例: php artisan make:listener User:SendSlackMessage -e User:UserCreatedEvent --queued

    选项

    • --queued 指示事件监听器应该排队
    • -e, --event=<domain:event> 正在被监听的事件类
  • make:observer <domain:observer>

    创建一个新的观察者类

    示例: php artisan make:observer User:UserObserver -m User:User

    选项

    • -m, --model=<domain:model> 观察者应用到的模型
  • make:policy <domain:policy>

    创建一个新的策略类

    示例: php artisan make:policy User:UserPolicy -m User:Post

    选项

    • -m, --model=<domain:model> 策略应用的模型
    • -g, --guard=<domain:model> 策略依赖的守卫
  • make:query-builder <domain:query-builder>

    为特定领域创建查询构建器

    示例: php artisan make:query-builder User:UserQueryBuilder

  • make:rule <domain:rule>

    创建一个新的验证规则

    示例: php artisan make:rule User:PasswordMinlengthRule

    选项

    • -i, --implicit 生成隐式规则

应用程序命令

  • make:controller <domain:controller>

    创建一个新的控制器类

    示例: php artisan make:controller User:UserController

    选项

    • --force 即使控制器已存在,也创建类
    • --api 排除控制器中的创建和编辑方法
    • -i, --invokable 生成一个方法,可调用的控制器类
    • -m <domain:model>, --model=<domain:model> 为给定模型生成资源控制器
    • -p <domain:model>, --parent=<domain:model> 生成嵌套资源控制器类
    • -r, --resource 生成资源控制器类
  • make:request <domain:request>

    创建一个新的表单请求类

    示例: php artisan make:request User:LoginRequest

  • make:job <domain:job>

    创建一个新的作业类

    示例: php artisan make:job User:SendMessageJob

    选项

    • --sync 表示作业应为同步
  • make:mail <domain:mail>

    创建一个新的电子邮件类

    示例: php artisan make:mail User:WelcomeUser

    选项

    • -f, --force 即使存在可投递的类也创建类
    • -m, --markdown[=MARKDOWN] 为可投递的类创建新的 Markdown 模板
  • make:notification <domain:notification>

    创建一个新的通知类

    示例: php artisan make:notification User:InvoicePaid

    选项

    • -f, --force 即使存在通知也创建类
    • -m, --markdown[=MARKDOWN] 为通知创建新的 Markdown 模板
  • make:middleware <domain:middleware>

    创建一个新的中间件类

    示例: php artisan make:middleware User:AuthMiddleware

  • make:resource <domain:resource>

    创建一个新的资源类

    示例: php artisan make:resource User:UserResource

    选项

    • -c, --collection 创建资源集合
  • make:component <domain:component>

    创建一个新的视图组件类

    示例: php artisan make:component User:UserComponent

    选项

    • --force 即使组件已存在也创建类
    • --inline 创建渲染内联视图的组件
  • make:view-model <domain:view-model>

    为给定应用程序创建视图模型

    示例: php artisan make:view-model User:UsersViewModel

数据库命令

  • make:factory <domain:factory>

    创建一个新的模型工厂

    示例: php artisan make:factory UserFactory

    选项

    • -m <domain:model>, --model=<domain:model> 将工厂绑定到模型

TODO

感谢