jitsu / http
面向对象的HTTP请求和响应接口
Requires
- php: >=5.3.0
- jitsu/array: ^0.1.1
This package is auto-updated.
Last update: 2024-09-11 18:38:20 UTC
README
此包定义了一个抽象的、面向对象的接口,用于与HTTP请求和响应交互,并实现了此接口,用于请求和响应数据,这些数据传统上可以通过PHP脚本通过超全局变量、全局函数等访问。这使得应用程序代码可以从请求来源和响应去向的具体细节中解耦,从而实现依赖注入和单元测试。
还可以查看 PSR-7,它旨在实现相同的目标,显然具有更多的社区支持。
此包是 Jitsu 的一部分。
安装
使用 Composer 安装此包
composer require jitsu/http
命名空间
所有类和接口都在命名空间 Jitsu
下定义。主要的是在 Jitsu\Http
下定义。
API
interface Jitsu\Http\RequestInterface
HTTP请求的抽象接口。
$request_interface->getMethod()
获取请求中使用的HTTP方法。
$request_interface->getUri()
获取请求中发送的原始URI。
$request_interface->getProtocol()
获取请求中使用的协议/版本字符串。
$request_interface->getScheme()
获取请求中使用的方案(http或https)。
$request_interface->getHeader($name)
查找请求中发送的头部。
返回给定名称的头部值(不区分大小写),如果未发送该头部,则返回null。
$request_interface->getAllHeaders()
获取请求中发送的所有头部。
返回一个将原始头部名称映射到其值的数组。
$request_interface->getBody()
获取请求体作为单个字符串。
$request_interface->getBodyStream()
获取请求体的可读文件流句柄。
$request_interface->getOriginIpAddress()
获取远程端点的IP地址。
$request_interface->getOriginPort()
获取远程端点的端口号。
interface Jitsu\Http\ResponseInterface
HTTP响应的抽象接口。
$response_interface->setStatus($version, $code, $reason)
设置响应的HTTP状态行。
$response_interface->addHeader($name, $value)
在响应中发送HTTP头部。
不会覆盖具有相同名称的先前发送的头部。
$response_interface->flushOutputBuffer()
将PHP输出缓冲区刷新到响应体中。
$response_interface->sentHeaders()
确定是否已发送头部。
如果头部已经发送,则可能无法再修改。
class Jitsu\Http\RequestBase
实现 RequestInterface
。
RequestInterface
的扩展,提供了一些实用方法。
$request_base->fullUrl()
获取完整的请求URL。
包括方案、主机名、路径和查询字符串。这是原始形式,不是URL解码的。
$request_base->scheme()
获取请求方案。
$request_base->protocol()
获取请求中使用的协议/版本字符串。
$request_base->host()
获取 Host
头的值。
$request_base->method()
获取请求中使用的HTTP方法。
总是返回大写(例如 'GET'
、'PUT'
等)。
$request_base->uri()
获取请求中发送的原始URI。
这包括请求的路径和查询字符串。注意,这是原始形式,不是URL解码后的形式。
$request_base->path()
获取请求URI的路径部分。
注意,这是原始形式,不是URL解码后的形式。
$request_base->queryString()
获取请求URI的查询字符串。
注意,这是原始形式,不是URL解码后的形式。
$request_base->form($name, $default = null)
从请求中查找表单编码的参数。
$request_base->formParams()
从请求中获取所有表单编码的参数。
返回一个数组,将请求中发送的表单编码参数的名称映射到它们的值。所有键和值都是解码后的。参数根据所使用的HTTP方法从请求的相应部分获取。对于 GET
、DELETE
等,它们从查询字符串中解析出来,否则从请求体中解析出来。
$request_base->header($name, $default = null)
查找请求中发送的头部。
$request_base->headers()
获取请求中发送的所有头。
返回一个将原始头部名称映射到其值的数组。
$request_base->contentType()
获取请求的内容类型。
$request_base->acceptableContentTypes()
将 Accept
头解析为一个可接受的内容类型列表。
返回一个关联数组,将内容类型字符串映射到它们各自的质量评分,按质量评分降序排列。
$request_base->accepts($content_type)
返回请求是否会接受特定内容类型。
$request_base->negotiateContentType($acceptable)
确定请求的最可接受内容类型。
给定一个可接受内容类型的数组,返回在 Accept
头中质量评分最高的内容类型的索引。如果没有内容类型是可接受的,则返回 null
。
$request_base->referer()
是 referrer
的别名。
是正确拼写的 referrer
的别名。请参阅 \Jitsu\RequestBase::referrer()
。
$request_base->referrer()
获取HTTP引用者URI或 null
如果它没有被发送。
$request_base->cookie($name, $default = null)
查找请求中发送的cookie。
解析并解码cookie值。
$request_base->cookies()
获取请求中发送的cookies。
解析并解码cookie值。
TODO:此功能目前尚未实现。
$request_base->body()
返回请求体作为单个字符串。
$request_base->bodyStream()
返回请求体的可读文件流句柄。
$request_base->originIpAddress()
获取远程端点的IP地址。
$request_base->originPort()
获取远程端点的端口号。
class Jitsu\Http\ResponseBase
实现 ResponseInterface
。
ResponseInterface
的扩展,提供了一些实用方法。
$response_base->setStatusCode($code, $reason = '')
设置响应的状态码。
抽象公共函数 statusCode()
获取当前设置在此响应上的状态码。
$response_base->setContentType($type)
设置响应的内容类型。
$response_base->addCookie($name, $value, $attrs)
向响应中添加cookie。
TODO:此功能尚未实现。
$response_base->redirect($url, $code, $reason = '')
向另一个URL发出重定向。
注意,这不会退出当前进程。请记住,依赖于客户端尊重此头并关闭连接给您可能是一个巨大的安全漏洞。
在此处也设置了响应码。响应码应该是3XX代码。
$response_base->startOutputBuffering()
开始缓冲PHP输出。
$response_base->clearOutputBuffer()
丢弃PHP输出缓冲区的内容。
class Jitsu\Http\CurrentRequest
扩展 RequestBase
。
RequestBase
的子类,实现了针对当前HTTP请求的 RequestInterface
。
$current_request->getMethod()
$current_request->getUri()
$current_request->getProtocol()
$current_request->getScheme()
$current_request->getHeader($name)
$current_request->getAllHeaders()
$current_request->getBody()
$current_request->getBodyStream()
$current_request->getOriginIpAddress()
$current_request->getOriginPort()
$current_request->method()
$current_request->path()
$current_request->queryString()
$current_request->form($name, $default = null)
$current_request->formParams()
$current_request->cookie($name, $default = null)
$current_request->cookies()
$current_request->originIpAddress()
$current_request->originPort()
$current_request->timestamp()
类 Jitsu\Http\CurrentResponse
继承自 ResponseBase
。
是 ResponseBase
的子类,并实现了 ResponseInterface
,用于处理当前 HTTP 响应。
$current_response->setStatus($version, $code, $reason)
$current_response->setStatusCode($code, $reason = null)
$current_response->statusCode()
$current_response->addHeader($name, $value)
$current_response->addCookie($name, $value, $attrs = array())
$current_response->deleteCookie($name, $attrs)
$current_response->redirect($url, $code, $reason = null)
$current_response->flushOutputBuffer()
$current_response->sentHeaders()
类 Jitsu\Request
获取当前正在处理的 HTTP 请求的信息。
类 \Jitsu\Http\CurrentRequest
通过面向对象的接口提供相同的信息。建议使用它。
Request::scheme()
获取 URI 的方案(http
或 https
)。
Request::protocol()
获取 HTTP 请求中指示的协议/版本。
Request::host()
获取 Host
头的值。
Request::method()
获取请求中使用的 HTTP 方法(GET
、POST
等)。
Request::uri()
获取完整的原始请求 URI。
Request::queryString()
获取 URI 的查询字符串。
Request::form($name, $default = null)
从请求中查找表单编码的参数。
Request::formParams()
获取请求的所有表单编码参数。
Request::header($name, $default = null)
在请求中查找 HTTP 头。
Request::headers()
获取请求中发送的所有 HTTP 头。
如果 PHP 通过 Apache 运行(函数 apache_request_header
可用),则应返回原始大小写的头名称。否则,它们将是小写。
Request::cookie($name, $default = null)
查找请求中发送的 cookies。
Request::cookies()
以数组形式获取请求中发送的所有 cookies。
Request::body()
将请求体中的原始输入吸入到一个字符串中。
结果被缓存,因此该函数可能被多次调用。
Request::bodyStream()
返回请求体的文件流句柄。
Request::file($name)
查找关于通过多部分表单请求发送的文件的信息。
Request::files()
获取关于通过多部分表单请求发送的所有文件的信息。
Request::saveFile($name, $dest_path)
保存作为多部分表单参数上传的文件。
将表单参数 $name
上传的文件保存到文件系统中的路径 $dest_path
。
Request::originIpAddress()
获取远程端点的IP地址。
Request::originPort()
获取远程端点的端口号。
Request::timestamp()
请求开始的戳记。
类 Jitsu\Response
构建即将发送的当前 HTTP 响应的实用工具。
类 \Jitsu\Http\CurrentResponse
通过面向对象的接口提供相同的能力。建议使用它。
Response::setStatus($version, $code, $reason)
设置响应状态行。
注意,这与 code
是互斥的。
Response::setStatusCode($code)
设置响应代码。
自动设置适当的理由字符串。
注意,这与 status
是互斥的。
Response::statusCode()
获取当前设置的响应代码。
Response::addHeader($name, $value)
在响应中设置头。
必须在写入输出之前调用,就像 PHP header
一样。
不会覆盖带有相同名称之前发送的头。
Response::addCookie($name, $value, $expires = null, $path = null, $domain = null)
在响应中设置 cookie。
Response::deleteCookie($name, $domain = null, $path = null)
在响应中指示删除cookie。
Response::redirect($url, $code)
发出HTTP重定向。
Response::startOutputBuffering()
开始缓冲PHP输出。
Response::flushOutputBuffer()
刷新PHP输出缓冲区并停止缓冲。
Response::clearOutputBuffer()
丢弃PHP输出缓冲区的内容并停止缓冲。
Response::sentHeaders()
确定是否已发送头部。
如果头部已经发送,则可能无法再修改。
Response::bodyStream()
获取对响应体的可写文件流的句柄。