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) – 要删除的头的名称。

返回值:

当前的消息实例

返回类型:

CodeIgniter\HTTP\Message

从消息中删除头部。 $name 是不区分大小写的头部名称。

<?php

$message->removeHeader('Host');
appendHeader($name, $value)
参数:
  • $name (string) – 要修改的头的名称

  • $value (string) – 要添加到头的值。

返回值:

当前的消息实例

返回类型:

CodeIgniter\HTTP\Message

将值添加到现有头部。头部必须已经是值的数组而不是单个字符串。如果它是一个字符串,则会抛出 LogicException。

<?php

$message->appendHeader('Accept-Language', 'en-US; q=0.8');
prependHeader($name, $value)
参数:
  • $name (string) – 要修改的头的名称

  • $value (string) – 要添加到头部开头的值。

返回值:

当前的消息实例

返回类型:

CodeIgniter\HTTP\Message

将值添加到现有头部开头。头部必须已经是值的数组而不是单个字符串。如果它是一个字符串,则会抛出 LogicException。

<?php

$message->prependHeader('Accept-Language', 'en,');
getProtocolVersion()
返回值:

当前的 HTTP 协议版本

返回类型:

string

返回消息的当前 HTTP 协议。如果未设置,将返回 1.1

setProtocolVersion($version)
参数:
  • $version (string) – HTTP 协议版本

返回值:

当前的消息实例

返回类型:

CodeIgniter\HTTP\Message

设置此消息使用的 HTTP 协议版本。有效值为 1.01.12.03.0

<?php

$message->setProtocolVersion('1.1');