fperdomo / http
Requires
- php: >=8.2
Requires (Dev)
- phpunit/phpunit: 9.5.*
This package is auto-updated.
Last update: 2024-09-13 20:00:57 UTC
README
免责声明
我上传了自己的版本,因为我向 http 发起了支持 PHP 8.2 的拉取请求,但从未得到回复,该包自 2016 年以来没有更新。
安装
您可以使用 composer 安装此组件。包名是
composer require fperdomo/http
基本用法
请求
Request 类提供了一种面向对象的包装方式,围绕 PHP 超全局变量。这使得它可以作为依赖项注入到需要它的任何类中。
use Http\HttpRequest; $request = new HttpRequest($_GET, $_POST, $_COOKIE, $_FILES, $_SERVER, file_get_contents('php://input'));
现在您可以在 $request
对象上使用以下方法
$request->getParameter($key, $defaultValue = null); $request->getFile($key, $defaultValue = null); $request->getCookie($key, $defaultValue = null); $request->getParameters(); $request->getQueryParameters(); $request->getBodyParameters(); $request->getRawBody(); $request->getCookies(); $request->getFiles(); $request->getMethod(); $request->getHttpAccept(); $request->getReferer(); $request->getUserAgent(); $request->getIpAddress(); $request->isSecure(); $request->getQueryString();
请注意,GET 和 POST 参数合并在一起,可以通过 getParameter
访问。
响应
HttpResponse
对象是 HTTP 响应的数据载体。它没有构造函数依赖项,可以仅用以下方式实例化
use Http\HttpResponse; $response = new HttpResponse;
可以使用以下方法修改响应
$response->setStatusCode($statusCode, $statusText = null); $response->addHeader($name, $value); $response->setHeader($name, $value); $response->addCookie(Cookie $cookie); $response->deleteCookie(Cookie $cookie); $response->setContent($content); $response->redirect($url);
如果您在 setStatusCode
中不提供状态文本,则如果可用,将选择适当的默认状态文本用于 HTTP 状态码。
addHeader
在不覆盖现有值的情况下添加新的头值,setHeader
将覆盖现有值。
redirect
方法将设置 301 重定向的状态码和文本。
deleteCookie
将将 cookie 内容设置为空,并将过期时间设置为过去。
以下两种方法可用于将响应发送到客户端
$response->getHeaders(); $response->getContent();
它们可以这样使用
foreach ($response->getHeaders() as $header) { header($header, false); } echo $response->getContent();
header
的第二个参数必须是 false。否则,将覆盖现有头。
Cookie
为了避免在您的类中使用 new
调用,并能够为您的应用程序设置默认的 cookie 设置,您可以使用 CookieBuilder
类来创建 cookie 对象。它有以下可用方法
$cookieBuilder->setDefaultDomain($domain); // defaults to NULL $cookieBuilder->setDefaultPath($path); // defaults to '/' $cookieBuilder->setDefaultSecure($secure); // defaults to TRUE $cookieBuilder->setDefaultHttpOnly($httpOnly); // defaults to TRUE $cookieBuilder->build($name, $value); // returns the cookie object
您可以使用以下方法来操作现有的 cookie
$cookie->setValue($value); $cookie->setMaxAge($seconds); $cookie->setDomain($domain); $cookie->setPath($path); $cookie->setSecure($secure); $cookie->setHttpOnly($httpOnly);
cookie 对象可以使用 HttpResponse
方法 addCookie
和 deleteCookie
。
示例
<?php use Http\HttpRequest; use Http\HttpResponse; use Http\CookieBuilder; $loader = require_once __DIR__ . '/vendor/autoload.php'; $cookieBuilder = new CookieBuilder; // Disable the secure flag because this is only an example $cookieBuilder->setDefaultSecure(false); $request = new HttpRequest($_GET, $_POST, $_COOKIE, $_FILES, $_SERVER, file_get_contents('php://input')); $response = new HttpResponse; $content = '<h1>Hello World</h1>'; $content .= $request->getCookie('TestCookie', 'Cookie is not set.'); if ($request->getParameter('setCookie') === 'true') { $cookie = $cookieBuilder->build('TestCookie', 'Cookie is set.'); $response->addCookie($cookie); } $response->setContent($content); foreach ($response->getHeaders() as $header) { header($header); } echo $response->getContent();