ehough / guzzle-commands
PHP 5.3 兼容的 guzzle/command 分支
Requires
- php: >=5.3.29
- ehough/generators: ~1.0
- ehough/guzzle: ^6.2
- ehough/promises: ~1.3
- ehough/psr7: ~1.0
Requires (Dev)
- phpunit/phpunit: ~4.0|~5.0
This package is not auto-updated.
Last update: 2020-04-03 18:01:39 UTC
README
A PHP 5.3 兼容的 Guzzle Commands 分支。
为什么?
遗憾的是,60% 的所有 PHP 网络服务器仍在运行 PHP 5.4 及以下版本,但 Guzzle Commands 需要 PHP 5.5 或更高版本。此分支使 Guzzle Commands 兼容 PHP 5.3.29 到 7.1。
如何使用此分支
用法与 guzzle/command
相同,只是在代码库中,代码位于 Hough\Guzzle\Command
命名空间下,而不是 GuzzleHttp\Command
。
此库使用 Guzzle (ehough/guzzle
,版本 6.x) 并提供基础,通过将 Guzzle HTTP 请求 和 响应 抽象为更高级别的 命令 和 结果 来创建功能齐全的 Web 服务客户端。可以用于自定义客户端行为的中间件系统,类似于(但独立于)HTTP 层中的系统,在将命令准备为请求并处理响应为结果时使用。
命令
代表 Web 服务操作的键值对对象。命令有一个名称和一组参数。
结果
代表执行 Web 服务操作的处理结果的键值对对象。
服务客户端
服务客户端是实现 Hough\Guzzle\Command\ServiceClientInterface
的 Web 服务客户端,并使用底层的 Guzzle HTTP 客户端 (GuzzleHttp\Client
) 与服务进行通信。服务客户端创建并执行 命令 (Hough\Guzzle\Command\CommandInterface
), 这些命令封装了 Web 服务中的操作,包括操作名称和参数。此库提供了一个通用的服务客户端实现:Hough\Guzzle\Command\ServiceClient
类。
创建服务客户端实例
@TODO 添加文档
ServiceClient
构造函数- 转换函数 (
$commandToRequestTransformer
和$responseToResultTransformer
) HandlerStack
执行命令
服务客户端使用 getCommand()
方法创建命令对象。
$commandName = 'foo'; $arguments = ['baz' => 'bar']; $command = $client->getCommand($commandName, $arguments);
创建命令后,您可以使用客户端的 execute()
方法执行命令。
$result = $client->execute($command);
执行命令的结果将是一个 Hough\Guzzle\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
到 Result
和 Request
到 Response
的生命周期。
待办事项
- 中间件系统和命令与请求层
HandlerStack