gnugat / query-bus
v2.0.1
2015-05-31 07:36 UTC
Requires
- php: >=5.3.3
Requires (Dev)
- fabpot/php-cs-fixer: ~1.6
- memio/spec-gen: ~0.2
- phpspec/phpspec: ~2.2
- phpunit/phpunit: >=3.7,<5.0
This package is auto-updated.
Last update: 2022-02-01 12:47:56 UTC
README
用于询问消息的PHP库。
询问消息传递给QueryBus
服务,该服务返回支持的第一QueryMatcher
的结果。
安装
可以使用Composer安装QueryBus。
composer require "gnugat/query-bus:~2.0"
简单转换
让我们看以下表格
CREATE TABLE article ( id int, title VARCHAR(255), content TEXT );
如果我们想执行以下查询
SELECT id, title, content FROM article WHERE id = 42;
那么我们首先需要创建一个Query
,它是一个简单的DTO。
<?php require __DIR__.'/vendor/autoload.php'; use Gnugat\QueryBus\QueryBus; class GetArticle { public $id; public function __construct($id) { if (null === $id) { throw new \InvalidArgumentException('Required parameter ID is missing'); } $this->id = (int) $id; } }
注意:查询可以包含简单的验证,例如检查
null
值。
然后我们需要创建一个QueryMatcher
。
// ... use Gnugat\QueryBus\QueryMatcher; class GetArticleMatcher implements QueryMatcher { private $connection; public function __construct($connection) { $this->connection = $connection; pg_prepare($this->connection, 'get_article', 'SELECT id, title, content FROM articles WHERE id = $1'); } public function supports($query) { return $query instanceof GetArticle; } public function match($query) { $result = pg_execute($this->connection, 'get_article', array($query->id)); return pg_fetch_array($result, NULL, PGSQL_ASSOC); } }
接下来我们需要将其注册到QueryBus
中。
// ... use Gnugat\QueryBus\QueryBus; $connection = pg_pconnect('dbname=blog'); $queryBus = new QueryBus(); $queryBus->add(new GetArticleMatcher($connection));
最后我们可以实际执行查询。
// ... $articles = $queryBus->match(new GetArticle(42));
进一步文档
您可以使用以下方法查看当前和以前的版本:
git tag
命令- Github上的发布页面
- 列出版本之间更改的文件
您可以在以下链接中找到更多文档: