lukman-ss/http
Composer 安装命令:
composer require lukman-ss/http
包简介
A clean, modern, and dependency-free PHP 8.2+ HTTP abstraction package for Request, Response, HeaderBag, MiddlewarePipeline, and more.
README 文档
README
A clean, modern, and dependency-free PHP 8.2+ HTTP abstraction package.
Requirements
- PHP 8.2 or higher
- No runtime dependencies
Installation
composer require lukman-ss/http
Request
use Lukman\Http\Request; $request = new Request( method: 'POST', uri: '/api/users?page=2', query: ['page' => '2'], request: ['name' => 'Lukman', 'email' => 'lukman@example.com'], headers: ['Content-Type' => 'application/json'], body: '{"name":"Lukman"}', ); $request->method(); // 'POST' $request->uri(); // '/api/users?page=2' $request->path(); // '/api/users' $request->isMethod('post'); // true $request->query('page'); // '2' $request->query(); // ['page' => '2'] $request->input('name'); // 'Lukman' $request->input(); // ['name' => 'Lukman', 'email' => 'lukman@example.com'] $request->json('name'); // 'Lukman' $request->json(); // ['name' => 'Lukman'] $request->all(); // ['name' => 'Lukman', 'email' => 'lukman@example.com'] $request->only(['name']); // ['name' => 'Lukman'] $request->except(['email']); // ['name' => 'Lukman'] $request->header('Content-Type'); // 'application/json' $request->header('content-type'); // 'application/json' $request->headers()->has('accept'); // false
Capture from PHP globals:
$request = Request::capture();
Uploaded files:
$file = $request->file('avatar'); // UploadedFile|null $file?->isValid(); $file?->extension(); $file?->moveTo('/var/uploads/avatar.jpg');
Response
use Lukman\Http\Response; $response = new Response('Hello, world!', 200, ['X-App' => 'lukman-http']); $response->content(); // 'Hello, world!' $response->status(); // 200 $response ->withStatus(201) ->setContent('Created') ->header('Location', '/api/users/1'); $response->send();
JsonResponse
use Lukman\Http\JsonResponse; use Lukman\Http\Response; $response = new JsonResponse(['id' => 1, 'name' => 'Lukman'], 201); $response->content(); // '{"id":1,"name":"Lukman"}' $response->headers()->get('content-type'); // 'application/json' $response = Response::json(['error' => 'not found'], 404);
RedirectResponse
use Lukman\Http\RedirectResponse; use Lukman\Http\Response; $response = new RedirectResponse('/dashboard'); $response->headers()->get('location'); // '/dashboard' $response->status(); // 302 $response = new RedirectResponse('/new-url', 301); $response = Response::redirect('/login', 302);
MiddlewarePipeline
use Lukman\Http\MiddlewareInterface; use Lukman\Http\MiddlewarePipeline; use Lukman\Http\Request; use Lukman\Http\RequestHandlerInterface; use Lukman\Http\Response; class AuthMiddleware implements MiddlewareInterface { public function process(Request $request, RequestHandlerInterface $handler): Response { if ($request->header('Authorization') !== 'Bearer secret') { return new Response('Unauthorized', 401); } return $handler->handle($request); } } class FinalHandler implements RequestHandlerInterface { public function handle(Request $request): Response { return new Response('OK', 200); } } $pipeline = new MiddlewarePipeline([new AuthMiddleware()], new FinalHandler()); $response = $pipeline->handle(Request::capture());
Project Structure
src/
HeaderBag.php
JsonResponse.php
MiddlewareInterface.php
MiddlewarePipeline.php
RedirectResponse.php
Request.php
RequestHandlerInterface.php
Response.php
UploadedFile.php
tests/
AutoloadTest.php
HeaderBagTest.php
JsonResponseTest.php
MiddlewarePipelineTest.php
RedirectResponseTest.php
RequestTest.php
ResponseTest.php
UploadedFileTest.php
Running Tests
composer test
Or directly:
vendor/bin/phpunit
License
MIT. See LICENSE.
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 7
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-06-13
