prestashop / module-lib-guzzle-adapter
将插件模块连接到正在运行的商店上的Guzzle客户端
v1.0
2022-09-30 10:25 UTC
Requires
- php: ^7.2.5 || ^8.0
- guzzlehttp/psr7: ^2.3.0
- php-http/httplug: ^2.3
- php-http/message: ^1.13
- psr/http-client: ^1.0
- psr/http-message: ^1.0
Requires (Dev)
- phpstan/phpstan: ^1.7
- phpunit/phpunit: ^9.5|^8.5
- prestashop/php-dev-tools: ^4.2
Provides
README
将插件模块连接到正在运行的商店上的Guzzle客户端。此库与PHP 7.2.5及以上版本兼容。
安装
composer require prestashop/module-lib-guzzle-adapter
版本指南
使用方法
# Getting a client (Psr\Http\Client\ClientInterface) $options = ['base_url' => 'http://some-url/']; $client = (new Prestashop\ModuleLibGuzzleAdapter\ClientFactory())->getClient($options); # Sending requests and receive response (Psr\Http\Message\ResponseInterface) $response = $this->client->sendRequest( new GuzzleHttp\Psr7\Request('POST', 'some-uri') );
在这个例子中,base_url
是Guzzle 5的一个选项,在Guzzle 6+中被base_uri
替换。这两个键中的任何一个都可以设置,因为如果需要,它会自动为另一个客户端修改。
自动更改的属性包括
为什么需要这个库?
在PrestaShop模块中执行HTTP请求可以通过多种方式完成。使用核心提供的 file_get_contents()
,cURL 或 Guzzle。
根据PrestaShop的运行版本,捆绑的Guzzle版本可能不同
- PrestaShop 1.7: Guzzle 5
- PrestaShop 8: Guzzle 7
让模块同时兼容这两个主要的PrestaShop版本可能会很复杂。两个Guzzle版本提供的类名称相同,但它们的方法不同。
模块贡献者也无法要求其自己的Guzzle依赖项,因为PHP无法加载相同类的不同版本,并且他永远不会知道哪个会首先加载。
实现说明
此库重用了PHP-HTTP背后的想法,即HTTP请求的实现应该相同(PSR),无论选择的客户端。
由于这些库在依赖中需要不同版本的Guzzle才能工作,因此从php-http/guzzle5-adapter和php-http/guzzle7-adapter复制的客户端文件已包含在此存储库中。要求它们一起使用将发生冲突,因此我们复制了客户端适配器以确保安全。