## Guzzle 支持 Swoole 协程的 [Guzzle](https://guzzle-cn.readthedocs.io/zh_CN/latest) , 可 Hook 第三方库 ## 组件 使用 [composer]([https://www.phpcomposer.com/](https://www.phpcomposer.com/)) 安装: ~~~ composer require mix/guzzle ~~~ ## 依赖注入配置 - [manifest/beans/guzzle.php](https://github.com/mix-php/mix-skeleton/blob/master/manifest/beans/guzzle.php) ## 使用 根据 `Guzzle` 官方文档使用即可: ```php $client = new \GuzzleHttp\Client(); $response = $client->get('https://www.baidu.com/'); ``` 也可以手动指定 `handler` 如下: ```php $handler = new \Mix\Guzzle\Handler\StreamHandler(); $stack = \GuzzleHttp\HandlerStack::create($handler); $client = new \GuzzleHttp\Client([ 'handler' => $stack, ]); ``` ## 原理 因为 Swoole 的 Hook 只支持 PHP Stream,Guzzle 库默认是使用 CURL 扩展,而 Swoole 不支持在协程中使用 CURL,因此本库将 Guzzle 默认的 CurlHandler 替换为 StreamHandler,并做了一些协程优化处理,让依赖 Guzzle 的第三方库无需修改代码即可使用 Swoole 协程。 ## 支持的第三方库 理论上基于 Guzzle 库开发的 SDK 都可使用本库 Hook,下面是已知的支持 Hook 的第三方库清单: - [alibabacloud/client](https://github.com/aliyun/openapi-sdk-php-client) - [TencentCloud/tencentcloud-sdk-php](https://github.com/TencentCloud/tencentcloud-sdk-php)