loophp / psr17
提供PSR17的合成实现。
Requires
- php: >= 8.1
- psr/http-factory: ^1.0
- psr/http-factory-implementation: ^1.0
- psr/http-message: ^2.0
- psr/http-message-implementation: ^1.0
Requires (Dev)
- ext-pcov: *
- drupol/php-conventions: ^5
- friends-of-phpspec/phpspec-code-coverage: ^6
- infection/infection: ^0.26
- infection/phpspec-adapter: ^0.2.0
- nyholm/psr7: ^1.8
- phpspec/phpspec: ^7.4
Suggests
- nyholm/psr7: A super lightweight PSR-7 implementation
This package is auto-updated.
Last update: 2024-09-13 09:28:46 UTC
README
PSR-17 http-factories实现
PSR-17规范是关于HTTP工厂的。
存在许多PSR-17接口,本包的目的是将它们全部重新组合在一个单独的接口中:PSR17Interface
。
此包还实现了一个PSR17
类,该类实现了此接口并提供了基本实现。
要求
- PHP >= 7.4
安装
composer require loophp/psr17
此包还需要psr/http-factory-implementation。建议使用nyholm/psr7,由Tobias Nyholm提供。
使用
<?php declare(strict_types=1); namespace App; use loophp\psr17\Psr17; use Nyholm\Psr7\Factory\Psr17Factory; include __DIR__ . '/vendor/autoload.php'; // In this example, I used nyholm/psr7 // But you could any another library of your choice. $requestFactory = $responseFactory = $streamFactory = $uploadedFileFactory = $uriFactory = $serverRequestFactory = new Psr17Factory(); $psr17 = new Psr17($requestFactory, $responseFactory, $streamFactory, $uploadedFileFactory, $uriFactory, $serverRequestFactory); $request = $psr17->createRequest('GET', 'https://github.com'); $response = $psr17->createResponse(200, 'hello'); $stream = $psr17->createStream('foobar'); $uploadedFile = $psr17->createUploadedFile($stream); $uri = $psr17->createUri('https://github.com/loophp/psr17'); $serverRequest = $psr17->createServerRequest('GET', 'https://github.com/');
与Symfony集成
自2021年7月29日起,已发布了此包的Symfony配方。
因此,如果您使用Symfony Flex,则无需执行任何操作。当Composer安装包时,Symfony Flex将自动安装配置文件并在您的应用程序中执行必要的服务和接口连接。
如果您不使用Flex,请将以下内容添加到services.yaml
services: # Register loophp/psr17/Psr17 class and autowire/autoconfigure it. loophp\psr17\Psr17: autowire: true autoconfigure: true # Alias the service to the Psr17 interface. loophp\psr17\Psr17Interface: '@loophp\psr17\Psr17'
同样,您还需要为Psr17
类的依赖项进行适当的连接。
这取决于用户,但如果您想使用默认实现,可以使用nyholm/psr7,它提供了所需的依赖项的Symfony配方,这样容器就能自动连接Psr17
服务。
代码质量、测试和基准测试
每次向库中引入更改时,Github都会运行测试和基准测试。
该库使用PHPSpec编写测试。您可以在spec
目录中查看它们。运行composer phpspec
以触发测试。
在每次提交之前,都会使用GrumPHP执行一些检查,运行./vendor/bin/grumphp run
以手动检查。
PHPInfection用于确保您的代码得到适当的测试,运行composer infection
以测试您的代码。
贡献
请随时通过发送Github pull请求来贡献。我相当积极:-)
变更日志
有关基于git提交的变更日志,请参阅CHANGELOG.md。
有关更详细的变更日志,请参阅发布变更日志。