php-http/discovery

查找并安装PSR-7, PSR-17, PSR-18和HTTPlug的实现

安装量: 204 769 525

依赖: 1 037

建议者: 18

安全: 0

星星: 1 256

关注者: 13

分支: 47

开放问题: 4

类型:composer-plugin

1.19.4 2024-03-29 13:00 UTC

README

Latest Version Software License Tests Code Coverage Quality Score Total Downloads

此库提供了自动发现和自动安装知名PSR-17、PSR-18和HTTPlug实现的工具。

安装

通过Composer

composer require php-http/discovery

作为库作者的用法

请参阅官方文档

如果你的库/SDK需要PSR-18客户端,这里有一个快速示例。

首先,你需要安装一个PSR-18客户端和一个PSR-17工厂实现。这应该只针对开发依赖进行,因为你不想强迫用户使用特定的实现

composer require --dev symfony/http-client
composer require --dev nyholm/psr7

然后,你可以禁用php-http/discovery中嵌入的Composer插件,因为你刚刚安装了所需的开发依赖以进行测试

composer config allow-plugins.php-http/discovery false

最后,你需要引入php-http/discovery以及你的库将需要的通用实现

composer require 'php-http/discovery:^1.17'
composer require 'psr/http-client-implementation:*'
composer require 'psr/http-factory-implementation:*'

现在,你已经准备好发起HTTP请求了

use Http\Discovery\Psr18Client;

$client = new Psr18Client();

$request = $client->createRequest('GET', 'https://example.com');
$response = $client->sendRequest($request);

内部,此代码将使用用户已安装的任何PSR-7、PSR-17和PSR-18实现。

作为库用户的用法

如果你使用了一个需要php-http/discovery的库/SDK,你可以配置自动发现机制,当项目中有多个实现时,使用特定的实现。

例如,如果你在你的项目中同时有nyholm/psr7guzzlehttp/guzzle,你可以通过运行以下命令告诉php-http/discovery使用guzzlehttp/guzzle而不是nyholm/psr7

composer config extra.discovery.psr/http-factory-implementation GuzzleHttp\\Psr7\\HttpFactory

这将更新你的composer.json文件以添加以下配置

{
    "extra": {
        "discovery": {
            "psr/http-factory-implementation": "GuzzleHttp\\Psr7\\HttpFactory"
        }
    }
}

别忘了运行composer install以应用更改,并确保启用Composer插件

composer config allow-plugins.php-http/discovery true
composer install

测试

composer test

贡献

请参阅我们的贡献指南

安全

如果你发现任何安全相关的问题,请通过[email protected]联系我们。

许可

MIT许可证(MIT)。请参阅许可文件获取更多信息。