loophp/psr17

提供PSR17的合成实现。

资助包维护!
drupol

1.0.6 2023-05-05 08:00 UTC

This package is auto-updated.

Last update: 2024-09-13 09:28:46 UTC


README

Latest Stable Version GitHub stars Total Downloads GitHub Workflow Status Type Coverage License Donate!

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

有关更详细的变更日志,请参阅发布变更日志