kaspi/psr7-wizard

从全局变量制作 PSR-7 ServerRequest

v1.1.0 2024-01-31 09:48 UTC

This package is auto-updated.

Last update: 2024-09-30 01:43:46 UTC


README

从全局 PHP 变量构建实现 PSR-7 ServerRequestInterface 的 ServerRequest 类。

需要 PHP 8.1 或更高版本。

附加链接: PSR-7PSR-17

安装

composer kaspi/psr7-wizard

用法

// Example build ServerRequest class with package kaspi/http-message

$httpFactory = new \Kaspi\HttpMessage\HttpFactory();

$wizard = new \Kaspi\Psr7Wizard\ServerRequestWizard(
    serverRequestFactory: $httpFactory,
    streamFactory: $httpFactory,
    uploadedFileFactory: $httpFactory,
    uriFactory: $httpFactory,  
);

/** @var \Psr\Http\Message\ServerRequestInterface $serverRequest */
$serverRequest = $wizard->fromGlobals();

// ✋🏻 Or create by params 👇🏻
$serverEnv = [
    'REMOTE_ADDR' => '127.0.0.1',
    'REMOTE_PORT' => '35096',
    'SERVER_SOFTWARE' => 'PHP 8.2.14 Development Server',
    'SERVER_PROTOCOL' => 'HTTP/1.1',
    'SERVER_NAME' => '127.0.0.1',
    'SERVER_PORT' => '8080',
    'REQUEST_URI' => '/',
    'REQUEST_METHOD' => 'POST',
    'SCRIPT_NAME' => '/index.php',
    'CONTENT_LENGTH' => '53',
    'HTTP_CONTENT_LENGTH' => '53'
];
$queryStringParams = [
    'search' => 'php%',
];
$cookie = [
    'save' => 'no'
];
$uploadedFiles = [
    $httpFactory->createUploadedFile('/tmp/file1');
];
$parsedBody = [
    'form' => [
        'name' => 'Joe',
        'contact' => '+555-36-89'
    ],
];
$body = 'form%5Bname%5D=Joe&form%5Bcontact%5D=%2B555-36-89';

$wizard->fromParams(
    serverParams: $serverEnv,
    queryParams: $queryStringParams,
    cookieParams: $cookie,
    files: $uploadedFiles,
    parsedBody: $parsedBody,
    body: $body 
);

开发环境

本地开发

需要 PHP 8.1,php Composer 2.x

测试

运行不带代码覆盖率的测试

composer test

运行带有 HTML 格式报告的测试以检查代码覆盖率

./vendor/bin/pest

需要安装 PCOV 驱动程序

⛑ 结果将在 .coverage-html 文件夹中

静态代码分析

对于静态分析,我们使用 Phan 包。

在没有 PHP 扩展 PHP AST 的情况下运行

./vendor/bin/phan --allow-polyfill-parser

代码风格

为了使代码符合标准,我们使用在 composer 的开发依赖中声明的 php-cs-fixer。

composer fixer

使用 PHP 8.1、8.2、8.3 的 Docker 镜像

您可以在 .env 文件中的 PHP_IMAGE 键中指定具有 PHP 版本的镜像。默认情况下,容器使用 php:8.1-cli-alpine 镜像构建。

构建 Docker 容器

docker-compose build

安装 php Composer 依赖项

docker-compose run --rm php composer install

运行具有代码覆盖率报告和 HTML 格式报告的测试

docker-compose run --rm php vendor/bin/pest --compact

⛑ 结果将在 .coverage-html 文件夹中

Phan(PHP 静态分析器

docker-compose run --rm php vendor/bin/phan

您可以在 Docker 容器中工作在 shell 中

docker-compose run --rm php sh
使用 Makefile 命令。

检查和修正代码风格

make fix

运行静态代码分析器

make stat

运行测试

make test

运行所有检查阶段

make all