smoothphp / querybus
简单的查询总线
v1.0.2
2017-11-16 17:15 UTC
Requires
- php: >=7.0.0
Requires (Dev)
- laravel/laravel: ^5.4.0
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.1
- squizlabs/php_codesniffer: ~2.3
This package is auto-updated.
Last update: 2024-09-12 04:43:22 UTC
README
安装
通过 Composer
$ composer require smoothphp/querybus
用法
查询总线用于在应用域内执行查询。通常这些是只读命令,写入操作使用 命令总线 来执行。
查询总线是一个简单的概念,将大部分实现决策留给开发者。为 Laravel 用户提供了一个简单的实现。
查询总线由 3 个组件组成。
- 查询
包含查询意图和参数的数据传输对象(DTO)。 - 查询总线
接收一个查询对象,解析查询处理器,并执行它。 - 查询翻译器
接收一个查询,并将其转换为查询处理器类的名称。
Laravel 用户
Laravel 查询总线接收一个查询对象,并通过在类名后添加 'Handler' 来解析处理器。然后通过容器解析这个处理器类,并注入所有依赖项。
例如,App\Queries\FindUserById
被解析为 App\Queries\FindUserByIdHandler
,然后执行 handle
方法。
不过,您可以自由地以任何方式实现查询处理器解析。
服务提供者
<?php return [ // ... 'providers' => [ // ... SmoothPhp\QueryBus\Laravel\LaravelQueryBusServiceProvider::class, ], ];
查询
<?php class FindUserById { public $id; public function __construct(string $id) { $this->id = $id; } }
查询处理器
<?php class FindUserByIdHandler { private $client; public function __construct(DBClient $client) { $this->client = $client; } public function handle(FindUserById $query) { return $this->client->table('users')->where('id', $query->id)->get(); } }
使用
<?php class ExampleController extends Controller { private $bus; public function __construct(\SmoothPhp\QueryBus\QueryBus $queryBus) { $this->bus = $queryBus; } public function showUser(string $userId) { return view('users.show')->with('user', $this->bus->query(new FindUserById($userId))); } }
变更日志
请参阅 变更日志 了解最近的变化。
测试
$ composer test
贡献
安全性
如果您发现任何安全相关的问题,请通过电子邮件 simon@smoothphp.com 而不是使用问题跟踪器。
致谢
许可证
MIT 许可证(MIT)。请参阅 许可证文件 了解更多信息。