thomasderooij/laravel-cqrs

一个Laravel CQRS类设置。

1.0.0 2022-10-18 11:59 UTC

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中添加您自定义的目录。