让Guzzle支持Swoole协程,这个项目的目的就是这么简单明了!本项目不包含Guzzle功能,请自行参考项目中的Guzzle6.x,理论上可以支持升级Guzzle版本,无需更新Guzzle-Swoole!Composer:"yurunsoft/guzzle-swoole":"~1.1"v1.1.0版本说明:说明众所周知,使用Guzzle指定一个Handler需要在实例化Client的时候传入。这样,如果想在Swoole协程环境下使用基于Guzzle开发的SDK,就需要修改原有的SDK代码。Guzzle-Swoole项目目前已经实现,没有修改任何代码。只需一句设置全局默认处理器,完美无缝兼容Swoole协程环境。在Swoole>=4.2.0中,可以设置默认的Handler为StreamHandler。\GuzzleHttp\DefaultHandler::setDefaultHandler(\Yurun\Util\Swoole\Guzzle\SwooleHandler::class);在Swoole<4.2.0中,可以将默认的Handler设置为本项目实现的SwooleHandler。\GuzzleHttp\DefaultHandler::setDefaultHandler(\GuzzleHttp\Handler\StreamHandler::class);这样就实现了完美的无缝兼容~实现原理首先依赖funkjedi/composer-include-files项目。本项目的作用是把composer.json中配置导入的文件先导入,这样可以在这个文件中进行预处理,然后通过Composer插件机制在post-autoload-dump事件中进行处理.读取guzzlehttp/guzzle/src/functions.php文件,去掉代码中的choose_handler()方法定义,将修改后的内存保存为guzzle-swoole/src/load.php文件。修改后的choose_handler()方法定义在guzzle-swoole/src/functions.php文件中,用于设置和获取全局默认handler。运行时会先导入load.php和functions.php文件,然后根据guzzlehttp/guzzle/src/functions_include.php中写的判断,Guzzle不会再导入原来的functions.php文件。代码仓库代码云:https://gitee.com/yurunsoft/G...Github:https://github.com/Yurunsoft/...
