kaspi / psr7-wizard
从全局变量制作 PSR-7 ServerRequest
v1.1.0
2024-01-31 09:48 UTC
Requires
- php: ^8.1 || ^8.2 || ^8.3
- psr/http-factory: ^1.0
- psr/http-message: 1.1 || ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.46
- kaspi/http-message: ^1.1
- mikey179/vfsstream: ^1.6
- pestphp/pest: ^2.31
- phan/phan: ^5.4
This package is auto-updated.
Last update: 2024-09-30 01:43:46 UTC
README
从全局 PHP 变量构建实现 PSR-7 ServerRequestInterface 的 ServerRequest 类。
需要 PHP 8.1 或更高版本。
安装
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 );
开发环境
- 本地开发(不使用 Docker)
- 使用 Docker 镜像(WSL,Linux)
本地开发
需要 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