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
) – 要删除的标头的名称。
- 返回:
当前消息实例
- 返回类型:
从消息中删除标头。
$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,');
- addHeader($name, $value)
在 4.5.0 版本加入.
- 参数:
$name (
string
) – 要添加的头名称。$value (
string
) – 头的值。
- 返回:
当前消息实例
- 返回类型:
添加具有相同名称的头(不是头的值)。仅在设置多个具有相同名称的头时使用。
<?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 协议版本
- 返回:
当前消息实例
- 返回类型:
设置此消息使用的 HTTP 协议版本。有效值为
1.0
,1.1
,2.0
和3.0
:<?php $message->setProtocolVersion('1.1');