skyraptor / command
提供构建基于命令的 Web 服务客户端的基础
Requires
- php: >=5.5.0
- guzzlehttp/guzzle: ^6.2
- guzzlehttp/promises: ~1.3
- guzzlehttp/psr7: ~1.0
Requires (Dev)
- phpunit/phpunit: ~4.0|~5.0
This package is auto-updated.
Last update: 2024-09-11 19:27:17 UTC
README
这个库使用 Guzzle (guzzlehttp/guzzle,版本 6.x) 并提供将 Guzzle HTTP 请求 和 响应 抽象为更高层的 命令 和 结果 的基础。可以像 HTTP 层中的系统一样使用 中间件 系统,但与之分离,以在准备命令到请求和将响应处理为结果时自定义客户端行为。
命令
表示 Web 服务操作的键值对对象。命令有一个名称和一组参数。
结果
表示执行 Web 服务操作后的处理结果的键值对对象。
安装
可以使用 Composer 安装此项目
composer require guzzlehttp/command
对于 Guzzle 5,请使用 composer require guzzlehttp/command:0.8.*。Guzzle 5 版本的源代码可在 0.8 分支 <https://github.com/guzzle/command/tree/0.8> 找到。
注意:如果 Composer 未全局 安装 <https://composer.php.ac.cn/doc/00-intro.md#globally>,则可能需要使用 php composer.phar(其中 composer.phar 是您的 Composer 复制路径)运行前面的 Composer 命令,而不是直接使用 composer。
服务客户端
服务客户端是实现了 GuzzleHttp\Command\ServiceClientInterface 的 Web 服务客户端,并使用底层的 Guzzle HTTP 客户端 (GuzzleHttp\Client) 与服务通信。服务客户端创建和执行 命令(GuzzleHttp\Command\CommandInterface),这些命令封装了 Web 服务中的操作,包括操作名称和参数。此库提供了一般服务客户端的实现:GuzzleHttp\Command\ServiceClient 类。
实例化服务客户端
@TODO 添加文档
ServiceClient构造函数- 转换函数(
$commandToRequestTransformer和$responseToResultTransformer) HandlerStack
执行命令
服务客户端使用 getCommand() 方法创建命令对象。
$commandName = 'foo'; $arguments = ['baz' => 'bar']; $command = $client->getCommand($commandName, $arguments);
创建命令后,您可以使用客户端的 execute() 方法执行该命令。
$result = $client->execute($command);
执行命令的结果将是一个 GuzzleHttp\Command\ResultInterface 对象。结果对象是 ArrayAccess-ible 的,并包含从 HTTP 响应中解析的数据。
服务客户端有魔法方法,可以作为执行命令的快捷方式,而不需要在执行它之前在单独的步骤中创建 Command 对象。
$result = $client->foo(['baz' => 'bar']);
异步命令
@TODO 添加文档
- 客户端方法的
-Async后缀 - 承诺
// Create and execute an asynchronous command. $command = $command = $client->getCommand('foo', ['baz' => 'bar']); $promise = $client->executeAsync($command); // Use asynchronous commands with magic methods. $promise = $client->fooAsync(['baz' => 'bar']);
@TODO 添加文档
- 等待承诺的
wait()。
$result = $promise->wait(); echo $result['fizz']; //> 'buzz'
并发请求
@TODO 添加文档
executeAll()executeAllAsync().- 选项(
fulfilled、rejected、concurrency)
中间件:扩展客户端
可以将中间件添加到服务客户端或底层 HTTP 客户端,以实现额外的行为并自定义 Command-to-Result 和 Request-to-Response 生命周期。
待办事项
- 中间件系统和命令与请求层
HandlerStack