thomasderooij / laravel-cqrs
一个Laravel CQRS类设置。
1.0.0
2022-10-18 11:59 UTC
Requires
- php: ^8.1
- laravel/framework: ^8|^9
- laravel/laravel: *
- thomasderooij/cqrs: ^1
This package is auto-updated.
Last update: 2024-09-30 01:32:43 UTC
README
安装
使用以下命令通过Composer安装此包:
composer require thomasderooij/laravel-cqrs
此包将自动注册所需的服务提供者。
可选,通过运行以下命令发布包配置:
php artisan vendor:publish --provider="Thomasderooij\LaravelCqrs\Providers\CqrsServiceProvider"
文档
它是一组类,用于在命令(或执行操作的事务)和查询(获取信息的事务)之间建立清晰的区分。
设置很简单。创建一个命令或查询。您的构造函数应该接收完成任务所需的数据。任何依赖项也应在此处实例化。我个人使用单例,但实现方式随意。
您的命令和查询有3个受保护的函数;
- Run(您的实际代码)
- isSatisfied(一个检查您是否可以执行代码的函数)
- Exception(如果isSatisfied返回false将抛出的异常)
canCommand和canQuery特质设置一个类来运行您的命令和查询。
快速示例:您有一个名为StoreFileCommand的命令。它将请求中的文件位置作为构造函数参数。
- run函数实际上将其移动到专用目录,并创建数据库条目以便稍后获取文件。
- isSatisfied函数检查文件扩展名、大小和其他可能对文件设置的限制。
- Exception函数返回一个新异常FileTooBig,在文件太大时抛出。
您的控制器说 $this->execute(new StoreFileCommand($fileLocation, $targetLocation)); 嘭,文件已存储。简洁、可重用。很棒。
命令
php artisan cqrs:command <Class name goes here>
这将为您创建一个命令。默认情况下,它将在app/Cqrs/Commands目录中。
php artisan cqrs:query <Class name goes here>
这将为您创建一个命令。默认情况下,它将在app/Cqrs/Queries目录中。
配置
要更改创建命令和查询的目录,只需发布CqrsServiceProvider的资产,并在config/cqrs.php中添加您自定义的目录。