承接 php-pico/http-message 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

php-pico/http-message

Composer 安装命令:

composer require php-pico/http-message

包简介

PSR-7 compliant HTTP message package.

README 文档

README

A lean, dependency-free PSR-7 implementation: immutable HTTP message objects for PHP 8.5+.

It provides the value objects defined by psr/http-message v2 — requests, responses, URIs, streams, and uploaded files. Every object is immutable: each with*() method returns a new instance and leaves the original untouched.

Installation

composer require php-pico/http-message

Usage

Requests and responses

use PhpPico\Http\Message\{Request, Response, Uri};

$request = new Request('GET', new Uri('https://example.com/users?page=2'));
$request->getMethod();          // 'GET'
$request->getRequestTarget();   // '/users?page=2'
$request->getHeaderLine('Host'); // 'example.com'

$response = new Response()
    ->withStatus(404)
    ->withHeader('Content-Type', 'application/json');

$response->getStatusCode();     // 404
$response->getReasonPhrase();   // 'Not Found'

Immutability

$a = new Response();
$b = $a->withStatus(500);

$a->getStatusCode(); // 200 — unchanged
$b->getStatusCode(); // 500

URIs

use PhpPico\Http\Message\Uri;

$uri = new Uri('https://user:pass@example.com:443/path?q=1#frag');

$uri->getScheme();    // 'https'
$uri->getHost();      // 'example.com'
$uri->getPort();      // null — 443 is the standard port for https
(string) $uri;        // 'https://user:pass@example.com/path?q=1#frag'

Streams

use PhpPico\Http\Message\Stream;

$body = Stream::create('Hello, world');
$response = new Response()->withBody($body);

(string) $response->getBody(); // 'Hello, world'

Server requests and uploads

use PhpPico\Http\Message\{ServerRequest, Uri};

$request = new ServerRequest('POST', new Uri('https://example.com/submit'), $_SERVER)
    ->withQueryParams($_GET)
    ->withParsedBody($_POST)
    ->withCookieParams($_COOKIE);

$request->getAttribute('user'); // null until set via withAttribute()

Validation

Input is validated strictly per the spec: header injection (CR/LF) is rejected, header names and HTTP methods must be valid tokens, ports must be in range, and status codes must be 100–599. Invalid input throws InvalidArgumentException; misuse of streams or uploaded files throws RuntimeException.

Creating messages from factories

This package contains the message objects only. To construct them through the PSR-17 factory interfaces, use the companion factory package (published separately).

License

MIT

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-06-22

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固