tflori / http
v1.9.0
2018-07-02 06:05 UTC
Requires
- php: >=5.5.0
Requires (Dev)
- phpunit/phpunit: ^5.0 || ^4.0
README
安装
您可以使用 composer 安装此组件
composer require tflori/http
基本用法
请求
请求类提供了一种面向对象的包装,围绕 PHP 超全局变量。这使得您可以将它作为依赖项注入到任何需要它的类中。
use Http\HttpRequest; $request = new HttpRequest($_GET, $_POST, $_COOKIE, $_FILES, $_SERVER, file_get_contents('php://input')); // equals to: $request = HttpRequest::createFromGlobals();
现在您可以在 $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->getScheme(); $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();
要发送响应,请使用以下方法
$response->send();
确保不要两次发送响应,否则您将收到错误消息。
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 = HttpRequest::createFromGlobals(); $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); $response->send();