VictorMln / laravel-tactician
Laravel 版本的 Tactician 命令总线实现
Requires
- php: >=7.2.0|^8.0
- league/tactician: 1.0.*
Requires (Dev)
- mockery/mockery: 1.0.*
- orchestra/testbench: ^3.8
- phpunit/phpunit: 7.*
- scrutinizer/ocular: ~1.1
This package is auto-updated.
Last update: 2024-09-10 06:48:32 UTC
README
Laravel Tactician 是由 Ross Tuck 实现的 Command Bus Tactician,并基于 joselfonseca/laravel-tactician 开发
安装
简单地执行 composer require
composer require victormln/laravel-tactician:1.0.*
或者在 composer.json 文件中添加这一行
"victormln/laravel-tactician" : "1.0.*"
其他
下载完依赖后,将服务提供者添加到 config/app.php 文件中
'providers' => [ ... Victormln\LaravelTactician\Providers\LaravelTacticianServiceProvider::class ... ]
安装完成!
使用方法
要使用命令总线,可以从 Laravel 容器中解析出总线,如下所示
$bus = app('Victormln\LaravelTactician\CommandBusInterface');
或者您可以将它注入到类的构造函数中
use Victormln\LaravelTactician\CommandBusInterface; class MyController extends BaseController { /** @var CommandBusInterface */ private $bus; public function __construct(CommandBusInterface $bus) { $this->bus = $bus; } }
注入命令总线后,您可以通过以下方式分发命令
// First parameter expects the command $bus->dispatch(new SimpleCommand());
注意:此包自动从与命令相同的路径中获取 CommandHandler,因此您无需进行任何操作来绑定两个文件。但是,如果您愿意,可以通过调用 addHandler 方法手动绑定命令处理器
$bus->addHandler('Path\SimpleCommand', 'Path\SimpleCommandHandler'); $bus->dispatch(new SimpleCommand());
有关 Tactician 命令总线的更多信息,请访问 http://tactician.thephpleague.com/
示例
查看这个简单创建订单命令的包实现示例 https://gist.github.com/victormln/f06a86f7204b251d6d6c876d5e516a67
绑定
您可以通过发布配置文件来配置定位器、屈折词、提取器和默认总线绑定
php artisan vendor:publish --provider="Victormln\LaravelTactician\Providers\LaravelTacticianServiceProvider"
然后您可以修改每个类名,它们将来自 Laravel 容器进行解析
return [ // The locator to bind 'locator' => 'Victormln\LaravelTactician\Locator\LaravelLocator', // The inflector to bind 'inflector' => 'League\Tactician\Handler\MethodNameInflector\HandleInflector', // The extractor to bind 'extractor' => 'League\Tactician\Handler\CommandNameExtractor\ClassNameExtractor', // The bus to bind 'bus' => 'Victormln\LaravelTactician\Bus' ];
生成器
您可以使用 artisan 自动生成 Commands 和 Handlers
artisan make:tactician:command Foo
artisan make:tactician:handler Foo
这将创建 FooCommand 和 FooCommandHandler,并将它们分别放置在 app/CommandBus/Commands 和 app/CommandBus/Handlers 中
同时运行两者
artisan make:tactician Foo
包含中间件
Laravel tactician 包含一些您可以在命令中使用的有用中间件
- 数据库事务:此中间件将在数据库事务中运行命令,如果抛出任何异常,事务将不会被提交,数据库将保持完整,您可以在
Victormln\LaravelTactician\Middleware\DatabaseTransactions
中找到此中间件。
变更日志
请查看发行页面 https://github.com/victormln/laravel-tactician/releases
测试
要运行此包中的测试,请导航到项目的根目录并运行
composer install
然后
vendor/bin/phpunit
贡献
有关详细信息,请参阅 CONTRIBUTING
安全
如果您发现任何安全相关的问题,请通过电子邮件 jose at ditecnologia dot com 而不是使用问题跟踪器
致谢
许可证
MIT 许可证 (MIT)。请参阅 许可证文件 以获取更多信息。