gnugat/query-bus

此包已弃用,不再维护。作者建议使用league/tactician包。

用于询问消息的PHP库。

v2.0.1 2015-05-31 07:36 UTC

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));

进一步文档

您可以使用以下方法查看当前和以前的版本:

您可以在以下链接中找到更多文档: