Skip to content
docs.
WORKSPACE

Your documentation

Explore the project catalog
Localzet ServerАсинхронный PHP-серверTriangleФреймворк и компонентыMIX IDИдентификация и интеграцииHack APIПубличные API хакатонаACNПроект и компонентыUserlay / UserNetПроект и компонентыAxiomПроект и компонентыМесседжинг через почтуПроект и компонентыLWT / JWT / JOSEПроект и компонентыФинансовая аналитика KimaiПроект и компонентыМультипарадигмальная БДПроект и компонентыZorin PlatformПроект и компонентыZorin TrustПроект и компонентыFloraScope / VegwatchПроект и компонентыaegis-qДокументация проектаaevumdbДокументация проектаauditДокументация проектаauto-invest-managerАвтотрейдерcaine-companionДокументация проектаcertbot-cloudflareДокументация проектаClusterLocalzet Server / ClustercmdveilДокументация проектаConsolePHP CLICronБиблиотеки Localzet Serverdata-connectorДокументация проектаdevice-controlDevice Controlenn-projectДокументация проектаEventsБиблиотеки Localzet ServerflowsintДокументация проектаforgeДокументация проектаHttpClientБиблиотеки Localzet ServerinterpreterСобственный языкinvariaДокументация проектаkeynotesДокументация проектаknotrouteKnotroutelaravel-personal-analyticsДокументация проектаlocalzet-osДокументация проектаmeridianДокументация проектаMQTTБиблиотеки Localzet Servernano-kernelСобственная ОСNoterДокументация проектаpersonal-analyticsДокументация проектаProxyБиблиотеки Localzet ServerPSRБиблиотеки Localzet ServerPSR-7Библиотеки Localzet Server✓rschs-monitorДокументация проектаsemsealДокументация проектаshardsealДокументация проектаSocketIOБиблиотеки Localzet ServerSOCKS5Библиотеки Localzet Serverstandalone-analyticsДокументация проектаstatic-php-cliДокументация проектаStorageБиблиотеки Localzet ServersutureДокументация проектаtempoweaveДокументация проектаttsСинтез речиTunnelБиблиотеки Localzet Serverui-kitUI KitvesperДокументация проектаWebAnalyzerWebAnalyzerzorin-access-brokerДокументация проектаzorin-authority-brokerДокументация проектаzorin-authority-sdk-phpДокументация проектаzorin-authority-sdk-pythonДокументация проектаzorin-authority-sdk-tsДокументация проектаzorin-client-intelДокументация проектаzorin-device-core-aospДокументация проектаzorin-host-agentДокументация проектаzorin-native-labДокументация проектаzorin-nodeДокументация проектаzorin-opsДокументация проектаdonstu-python-sdkДокументация проектаfloortraceFloortraceserver-rsLocalzet Server / Cluster
Catalog

PSR-7

HTTP messages, streams, URIs and multipart for PHP.

Окно терминала
composer config repositories.localzet-psr-7 vcs https://github.com/localzet/PSR-7
composer require localzet/psr7:dev-main

Types live under localzet\PSR7: Request/Response/ServerRequest, streams, Uri/UriResolver and MultipartStream. This is a separate message model; do not confuse it with Server 7’s mutable localzet\Server\Protocols\Http\Response. ServerRequest accepts a raw HTTP buffer; fromGlobals() targets PHP globals.

Check stream seekability/readability/writability, cursor position and resource ownership. For proxies/redirects, normalize URIs and validate destinations after resolving relative references. The manifest requires Server 4.x. Dedicated conformance tests remain necessary for immutable with-methods, URI encoding, multipart and interoperability; installation does not prove PSR-7 compliance.

  • php: ^8.2
  • localzet/server: ^4.1
  • psr/http-message: ^2.0
<?php
declare(strict_types=1);
use localzet\PSR7\Request;
use localzet\PSR7\Response;
use localzet\PSR7\Stream;
require __DIR__ . '/vendor/autoload.php';
$request = new Request('get', 'https://example.test/items?page=2');
$response = new Response(200, ['Content-Type' => 'application/json'], '{"ok":true}');
$tagged = $response->withHeader('X-Mode', 'preview');
$accepted = $response->withStatus(202);
$resource = fopen('php://temp', 'r+');
fwrite($resource, 'abcdef');
rewind($resource);
$stream = new Stream($resource);
try {
echo json_encode([
'method' => $request->getMethod(),
'target' => $request->getRequestTarget(),
'same_header_object' => $tagged === $response,
'original_status' => $response->getStatusCode(),
'new_status' => $accepted->getStatusCode(),
'first_bytes' => $stream->read(2),
'remaining_bytes' => $stream->getContents(),
], JSON_THROW_ON_ERROR), PHP_EOL;
} finally {
$stream->close();
}

Source · AGPL-3.0