HTTP 消息

Message 类为 HTTP 消息中请求和响应共有的部分提供了一个接口,包括消息体、协议版本、用于处理头的实用程序以及处理内容协商的方法。

这个类是 请求类响应类 的父类,不能直接使用。

类参考

class CodeIgniter\HTTP\Message
getBody()
返回:

当前消息体

返回类型:

mixed

如果已设置,返回当前消息体。如果不存在正文,则返回 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_ 开头的任何服务器数据,如 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,');
addHeader($name, $value)

在 4.5.0 版本加入.

参数:
  • $name (string) – 要添加的头名称。

  • $value (string) – 头的值。

返回:

当前消息实例

返回类型:

CodeIgniter\HTTP\Message

添加具有相同名称的头(不是头的值)。仅在设置多个具有相同名称的头时使用。

<?php

$message->addHeader('Set-Cookie', 'logged_in=no; Path=/');
$message->addHeader('Set-Cookie', 'sessid=123456; Path=/');
getProtocolVersion()
返回:

当前的 HTTP 协议版本

返回类型:

string

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

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

返回:

当前消息实例

返回类型:

CodeIgniter\HTTP\Message

设置此消息使用的 HTTP 协议版本。有效值为 1.0, 1.1, 2.03.0:

<?php

$message->setProtocolVersion('1.1');