HTTP 消息
Message 类提供了一个接口,用于访问 HTTP 消息中请求和响应共有的部分,包括消息主体、协议版本、用于处理标头的实用程序以及用于处理内容协商的方法。
此类是 Request 类 和 Response 类 扩展的父类。
类参考
- class CodeIgniter\HTTP\Message
- getBody()
- 返回值:
当前消息正文
- 返回类型:
混合
返回当前消息正文,如果有设置。如果没有正文,则返回 null
<?php echo $message->getBody();
- setBody($data)
- 参数:
$data (
mixed
) – 消息正文。
- 返回值:
Message|Response 实例,允许将方法链接在一起。
- 返回类型:
CodeIgniter\HTTP\Message|CodeIgniter\HTTP\Response
设置当前请求的正文。
- appendBody($data)
- 参数:
$data (
mixed
) – 消息正文。
- 返回值:
Message|Response 实例,允许将方法链接在一起。
- 返回类型:
CodeIgniter\HTTP\Message|CodeIgniter\HTTP\Response
将数据追加到当前请求的正文。
- populateHeaders()
- 返回值:
void
扫描并解析 SERVER 数据中找到的标头,并将其存储以供以后访问。这由 IncomingRequest 类 用于使当前请求的标头可用。
标头是任何以
HTTP_
开头的 SERVER 数据,例如HTTP_HOST
。每个消息都从其标准大写和下划线格式转换为 ucwords 和短划线格式。前面的HTTP_
将从字符串中删除。因此HTTP_ACCEPT_LANGUAGE
变成Accept-Language
。
- headers()
- 返回值:
找到的所有标头的数组。
- 返回类型:
array
返回找到或先前设置的所有标头的数组。
- header($name)
- 参数:
$name (
string
) – 您要检索其值的标头的名称。
- 返回值:
返回单个标头对象。如果存在多个具有相同名称的标头,则将返回标头对象的数组。
- 返回类型:
CodeIgniter\HTTP\Header|array
允许您检索单个消息头的当前值。
$name
是不区分大小写的标头名称。虽然标头在内部按上述方式转换,但您可以使用任何类型的案例访问标头<?php // These are all the same: $message->header('HOST'); $message->header('Host'); $message->header('host');
如果标头具有多个值,
getValue()
将作为值数组返回。您可以使用getValueLine()
方法以字符串形式检索值<?php echo $message->header('Accept-Language'); /* * Outputs something like: * 'Accept-Language: en,en-US' */ echo $message->header('Accept-Language')->getValue(); /* * Outputs something like: * [ * 'en', * 'en-US', * ] */ echo $message->header('Accept-Language')->getValueLine(); /* * Outputs something like: * en,en-US' */
您可以通过将过滤器值作为第二个参数传递来过滤标头
<?php $message->header('Document-URI', FILTER_SANITIZE_URL);
- hasHeader($name)
- 参数:
$name (
string
) – 您要查看其是否存在标头的名称。
- 返回值:
如果存在,则返回 true,否则返回 false。
- 返回类型:
bool
- getHeaderLine($name)
- 参数:
$name (
string
) – 要检索的标头的名称。
- 返回值:
表示标头值的字符串。
- 返回类型:
string
以字符串形式返回标头的值。此方法允许您在标头具有多个值时轻松获取标头值的字符串表示形式。值将被适当地连接
<?php echo $message->getHeaderLine('Accept-Language'); /* * Outputs: * 'en,en-US' */
- setHeader($name, $value)
- 参数:
$name (
string
) – 要设置值的标头的名称。$value (
mixed
) – 设置头部的值。
- 返回值:
当前的 Message|Response 实例
- 返回类型:
CodeIgniter\HTTP\Message|CodeIgniter\HTTP\Response
设置单个头的值。
$name
是不区分大小写的头部名称。如果头部在集合中不存在,它将被创建。$value
可以是字符串或字符串数组。<?php $message->setHeader('Host', 'codeigniter.com');
- removeHeader($name)
- 参数:
$name (
string
) – 要删除的头的名称。
- 返回值:
当前的消息实例
- 返回类型:
从消息中删除头部。
$name
是不区分大小写的头部名称。<?php $message->removeHeader('Host');
- appendHeader($name, $value)
- 参数:
$name (
string
) – 要修改的头的名称$value (
string
) – 要添加到头的值。
- 返回值:
当前的消息实例
- 返回类型:
将值添加到现有头部。头部必须已经是值的数组而不是单个字符串。如果它是一个字符串,则会抛出 LogicException。
<?php $message->appendHeader('Accept-Language', 'en-US; q=0.8');
- prependHeader($name, $value)
- 参数:
$name (
string
) – 要修改的头的名称$value (
string
) – 要添加到头部开头的值。
- 返回值:
当前的消息实例
- 返回类型:
将值添加到现有头部开头。头部必须已经是值的数组而不是单个字符串。如果它是一个字符串,则会抛出 LogicException。
<?php $message->prependHeader('Accept-Language', 'en,');
- getProtocolVersion()
- 返回值:
当前的 HTTP 协议版本
- 返回类型:
string
返回消息的当前 HTTP 协议。如果未设置,将返回
1.1
。
- setProtocolVersion($version)
- 参数:
$version (
string
) – HTTP 协议版本
- 返回值:
当前的消息实例
- 返回类型:
设置此消息使用的 HTTP 协议版本。有效值为
1.0
、1.1
、2.0
和3.0
<?php $message->setProtocolVersion('1.1');