2 关注者

类 yii\web\Request

继承关系yii\web\Request » yii\base\Request » yii\base\Component » yii\base\BaseObject
实现接口yii\base\Configurable
可用版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/web/Request.php

Web 请求类表示一个 HTTP 请求。

它封装了 $_SERVER 变量并解决了不同 Web 服务器之间的不一致性。此外,它还提供了一个接口,用于从 $_POST、$_GET、$_COOKIES 和通过其他 HTTP 方法(如 PUT 或 DELETE)发送的 REST 参数中检索请求参数。

Request 默认情况下在 yii\web\Application 中配置为应用程序组件。您可以通过 Yii::$app->request 访问该实例。

有关 Request 的更多详细信息和使用信息,请参阅 关于请求的指南文章

公共属性

隐藏继承的属性

属性 类型 描述 定义于
$absoluteUrl string 当前请求的绝对 URL。 yii\web\Request
$acceptableContentTypes array 按质量得分排序的内容类型。 yii\web\Request
$acceptableLanguages array 按偏好级别排序的语言。 yii\web\Request
$authCredentials array 包含两个元素:- 0: 通过 HTTP 身份验证发送的用户名,如果未提供用户名则为 null - 1: 通过 HTTP 身份验证发送的密码,如果未提供密码则为 null yii\web\Request
$authPassword string|null 通过 HTTP 身份验证发送的密码,如果未提供密码则为 null yii\web\Request
$authUser string|null 通过 HTTP 身份验证发送的用户名,如果未提供用户名则为 null yii\web\Request
$baseUrl string 应用程序的相对 URL。 yii\web\Request
$behaviors yii\base\Behavior[] 附加到此组件的行为列表。 yii\base\Component
$bodyParams array|object 请求正文中给出的请求参数。 yii\web\Request
$contentType string 请求内容类型。 yii\web\Request
$cookieValidationKey string 用于 Cookie 验证的密钥。 yii\web\Request
$cookies yii\web\CookieCollection Cookie 集合。 yii\web\Request
$csrfCookie array 创建 CSRF cookie 的配置。 yii\web\Request
$csrfParam string 用于防止 CSRF 的令牌名称。 yii\web\Request
$csrfToken string 用于执行 CSRF 验证的令牌。 yii\web\Request
$csrfTokenFromHeader string|null 浏览器通过 CSRF_HEADER 发送的 CSRF 令牌。 yii\web\Request
$eTags array 实体标签。 yii\web\Request
$enableCookieValidation boolean 是否应验证 Cookie 以确保它们未被篡改。 yii\web\Request
$enableCsrfCookie boolean 是否使用 Cookie 持久保存 CSRF 令牌。 yii\web\Request
$enableCsrfValidation boolean 是否启用 CSRF(跨站点请求伪造)验证。 yii\web\Request
$headers yii\web\HeaderCollection 头部集合。 yii\web\Request
$hostInfo string|null 请求 URL 的方案和主机名部分(如果需要,包括端口号)(例如:https://yiiframework.cn),如果无法从 $_SERVER 中获取且未设置,则为 null。 yii\web\Request
$hostName string|null 请求 URL 的主机名部分(例如:www.yiiframework.com)。 yii\web\Request
$ipHeaders string[] 代理服务器存储真实客户端 IP 的标头列表。 yii\web\Request
$isAjax boolean 这是否是一个 AJAX(XMLHttpRequest)请求。 yii\web\Request
$isConsoleRequest boolean 指示当前请求是否通过控制台发出的值。 yii\base\Request
$isDelete boolean 这是否是一个 DELETE 请求。 yii\web\Request
$isFlash boolean 这是否是一个 Adobe Flash 或 Adobe Flex 请求。 yii\web\Request
$isGet boolean 这是否是一个 GET 请求。 yii\web\Request
$isHead boolean 这是否是一个 HEAD 请求。 yii\web\Request
$isOptions boolean 这是否是一个 OPTIONS 请求。 yii\web\Request
$isPatch boolean 这是否是一个 PATCH 请求。 yii\web\Request
$isPjax boolean 这是否是一个 PJAX 请求。 yii\web\Request
$isPost boolean 这是否是一个 POST 请求。 yii\web\Request
$isPut boolean 这是否是一个 PUT 请求。 yii\web\Request
$isSecureConnection boolean 请求是否通过安全通道(https)发送。 yii\web\Request
$method string 请求方法,例如 GET、POST、HEAD、PUT、PATCH、DELETE。 yii\web\Request
$methodParam string 用于指示请求是否为通过 POST 隧道传输的 PUT、PATCH 或 DELETE 请求的 POST 参数名称。 yii\web\Request
$origin string|null CORS 请求的 URL 来源,如果不可用则为 null yii\web\Request
$parsers array 用于将原始 HTTP 请求正文转换为 $bodyParams 的解析器。 yii\web\Request
$pathInfo string 请求 URL 中入口脚本之后和问号之前的部分。 yii\web\Request
$port integer 非安全请求的端口号。 yii\web\Request
$portHeaders string[] 代理服务器存储真实请求端口的标头列表。 yii\web\Request
$preferredLanguage string 应用程序应使用的语言。 yii\web\Request
$queryParams array 请求 GET 参数值。 yii\web\Request
$queryString string 请求 URL 中问号之后的部分。 yii\web\Request
$rawBody string 请求正文。 yii\web\Request
$referrer string|null URL 引用来源,如果不可用则为 null。 yii\web\Request
$remoteHost string|null 远程主机名,如果不可用则为 null yii\web\Request
$remoteIP string|null 远程 IP 地址,如果不可用则为 null yii\web\Request
$scriptFile string 入口脚本文件路径。 yii\web\Request
$scriptUrl string 入口脚本的相对 URL。 yii\web\Request
$secureHeaders array 默认情况下受信任主机配置约束的标头列表。 yii\web\Request
$securePort integer 安全请求的端口号。 yii\web\Request
$secureProtocolHeaders array 用于确定连接是否通过 HTTPS 建立的标头列表。 yii\web\Request
$serverName string|null 服务器名称,如果不可用则为 null。 yii\web\Request
$serverPort integer|null 服务器端口号,如果不可用则为 null。 yii\web\Request
$trustedHosts array 受信任安全相关标头的配置。 yii\web\Request
$url string 当前请求的相对 URL。 yii\web\Request
$userAgent string|null 用户代理,如果不可用则为 null。 yii\web\Request
$userHost string|null 用户主机名,如果不可用则为 null。 yii\web\Request
$userIP string|null 用户 IP 地址,如果不可用则为 null。 yii\web\Request

公共方法

隐藏继承的方法

方法 描述 定义于
__call() 调用不是类方法的命名方法。 yii\base\Component
__clone() 此方法在通过克隆现有对象创建对象后被调用。 yii\base\Component
__construct() 构造函数。 yii\base\BaseObject
__get() 返回组件属性的值。 yii\base\Component
__isset() 检查属性是否已设置,即定义且不为 null。 yii\base\Component
__set() 设置组件属性的值。 yii\base\Component
__unset() 将组件属性设置为 null。 yii\base\Component
attachBehavior() 将行为附加到此组件。 yii\base\Component
attachBehaviors() 将行为列表附加到组件。 yii\base\Component
behaviors() 返回此组件应具有的行为列表。 yii\base\Component
canGetProperty() 返回一个值,指示是否可以读取属性。 yii\base\Component
canSetProperty() 返回一个值,指示是否可以设置属性。 yii\base\Component
className() 返回此类的完全限定名称。 yii\base\BaseObject
detachBehavior() 从组件中分离行为。 yii\base\Component
detachBehaviors() 从组件中分离所有行为。 yii\base\Component
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件。 yii\base\Component
get() 返回具有给定名称的 GET 参数。如果未指定名称,则返回所有 GET 参数的数组。 yii\web\Request
getAbsoluteUrl() 返回当前请求的绝对 URL。 yii\web\Request
getAcceptableContentTypes() 返回最终用户可接受的内容类型。 yii\web\Request
getAcceptableLanguages() 返回最终用户可接受的语言。 yii\web\Request
getAuthCredentials() yii\web\Request
getAuthPassword() yii\web\Request
getAuthUser() yii\web\Request
getBaseUrl() 返回应用程序的相对 URL。 yii\web\Request
getBehavior() 返回命名的行为对象。 yii\base\Component
getBehaviors() 返回附加到此组件的所有行为。 yii\base\Component
getBodyParam() 返回命名的请求正文参数值。 yii\web\Request
getBodyParams() 返回请求正文中给出的请求参数。 yii\web\Request
getContentType() 返回请求内容类型 Content-Type 标头字段指示 getRawBody() 中包含的数据的 MIME 类型,或者在 HEAD 方法的情况下,如果请求为 GET,则会发送的媒体类型。 yii\web\Request
getCookies() 返回 Cookie 集合。 yii\web\Request
getCsrfToken() 返回用于执行 CSRF 验证的令牌。 yii\web\Request
getCsrfTokenFromHeader() yii\web\Request
getETags() 获取 Etags。 yii\web\Request
getHeaders() 返回标头集合。 yii\web\Request
getHostInfo() 返回当前请求 URL 的方案和主机部分。 yii\web\Request
getHostName() 返回当前请求 URL 的主机部分。 yii\web\Request
getIsAjax() 返回这是否为 AJAX (XMLHttpRequest) 请求。 yii\web\Request
getIsConsoleRequest() 返回一个值,指示当前请求是否通过命令行发出。 yii\base\Request
getIsDelete() 返回这是否为 DELETE 请求。 yii\web\Request
getIsFlash() 返回这是否为 Adobe Flash 或 Flex 请求。 yii\web\Request
getIsGet() 返回这是否为 GET 请求。 yii\web\Request
getIsHead() 返回这是否为 HEAD 请求。 yii\web\Request
getIsOptions() 返回这是否为 OPTIONS 请求。 yii\web\Request
getIsPatch() 返回这是否为 PATCH 请求。 yii\web\Request
getIsPjax() 返回这是否为 PJAX 请求。 yii\web\Request
getIsPost() 返回这是否为 POST 请求。 yii\web\Request
getIsPut() 返回这是否为 PUT 请求。 yii\web\Request
getIsSecureConnection() 返回请求是否通过安全通道 (https) 发送。 yii\web\Request
getMethod() 返回当前请求的方法(例如 GET、POST、HEAD、PUT、PATCH、DELETE)。 yii\web\Request
getOrigin() 返回 CORS 请求的 URL 来源。 yii\web\Request
getPathInfo() 返回当前请求 URL 的路径信息。 yii\web\Request
getPort() 返回用于不安全请求的端口。 yii\web\Request
getPreferredLanguage() 返回此应用程序应使用的用户首选语言。 yii\web\Request
getQueryParam() 返回命名的 GET 参数值。 yii\web\Request
getQueryParams() 返回 $queryString 中给出的请求参数。 yii\web\Request
getQueryString() 返回请求 URL 中问号后面的部分。 yii\web\Request
getRawBody() 返回原始 HTTP 请求正文。 yii\web\Request
getReferrer() 返回 URL 来源。 yii\web\Request
getRemoteHost() 返回此连接另一端的计算机名称。 yii\web\Request
getRemoteIP() 返回此连接另一端的 IP 地址。 yii\web\Request
getScriptFile() 返回入口脚本文件路径。 yii\web\Request
getScriptUrl() 返回入口脚本的相对 URL。 yii\web\Request
getSecurePort() 返回用于安全请求的端口。 yii\web\Request
getServerName() 返回服务器名称。 yii\web\Request
getServerPort() 返回服务器端口号。如果通过转发标头(例如“X-Forwarded-Port”)指定了端口,并且远程主机是“受信任的主机”,则将使用该端口(请参阅 $portHeaders),否则将返回默认服务器端口。 yii\web\Request
getUrl() 返回当前请求的相对 URL。 yii\web\Request
getUserAgent() 返回用户代理。 yii\web\Request
getUserHost() 返回用户主机名称。 yii\web\Request
getUserIP() 返回用户 IP 地址。 yii\web\Request
hasEventHandlers() 返回一个值,指示是否有任何处理程序附加到命名的事件。 yii\base\Component
hasMethod() 返回一个值,指示是否定义了方法。 yii\base\Component
hasProperty() 返回一个值,指示是否为此组件定义了属性。 yii\base\Component
init() 初始化对象。 yii\base\BaseObject
off() 从此组件中分离现有的事件处理程序。 yii\base\Component
on() 将事件处理程序附加到事件。 yii\base\Component
parseAcceptHeader() 解析给定的 Accept(或 Accept-Language)标头。 yii\web\Request
post() 返回具有给定名称的 POST 参数。如果未指定名称,则返回所有 POST 参数的数组。 yii\web\Request
resolve() 将当前请求解析为路由和关联的参数。 yii\web\Request
setAcceptableContentTypes() 设置可接受的内容类型。 yii\web\Request
setAcceptableLanguages() yii\web\Request
setBaseUrl() 设置应用程序的相对 URL。 yii\web\Request
setBodyParams() 设置请求正文参数。 yii\web\Request
setHostInfo() 设置应用程序 URL 的方案和主机部分。 yii\web\Request
setIsConsoleRequest() 设置一个值,指示当前请求是否通过命令行发出。 yii\base\Request
setPathInfo() 设置当前请求的路径信息。 yii\web\Request
setPort() 设置用于不安全请求的端口。 yii\web\Request
setQueryParams() 设置请求 $queryString 参数。 yii\web\Request
setRawBody() 设置原始 HTTP 请求正文,此方法主要由测试脚本用于模拟原始 HTTP 请求。 yii\web\Request
setScriptFile() 设置入口脚本文件路径。 yii\web\Request
setScriptUrl() 设置应用程序入口脚本的相对 URL。 yii\web\Request
setSecurePort() 设置用于安全请求的端口。 yii\web\Request
setUrl() 设置当前请求的相对 URL。 yii\web\Request
trigger() 触发事件。 yii\base\Component
validateCsrfToken() 执行 CSRF 验证。 yii\web\Request

受保护的方法

隐藏继承的方法

方法 描述 定义于
createCsrfCookie() 创建包含随机生成的 CSRF 令牌的 Cookie。 yii\web\Request
filterHeaders() 根据 $trustedHosts 过滤标头。 yii\web\Request
generateCsrfToken() 生成用于执行 CSRF 验证的未掩码随机令牌。 yii\web\Request
getIpValidator() 创建 yii\validators\IpValidator 的实例。 yii\web\Request
getSecureForwardedHeaderParts() 返回解码的转发标头 yii\web\Request
getSecureForwardedHeaderTrustedPart() 获取令牌的第一个 Forwarded 标头值 yii\web\Request
getSecureForwardedHeaderTrustedParts() 仅获取受信任的 Forwarded 标头部分 yii\web\Request
getTrustedHeaders() 根据 $trustedHosts 获取受信任的标头。 yii\web\Request
getUserIpFromIpHeader() 从 IP 标头返回用户 IP。 yii\web\Request
getUserIpFromIpHeaders() $ipHeaders 返回用户 IP 地址。 yii\web\Request
loadCookies() $_COOKIE 转换为 yii\web\Cookie 数组。 yii\web\Request
loadCsrfToken() 从 Cookie 或会话中加载 CSRF 令牌。 yii\web\Request
resolvePathInfo() 解析当前请求 URL 的路径信息部分。 yii\web\Request
resolveRequestUri() 解析当前请求 URL 的请求 URI 部分。 yii\web\Request

常量

隐藏继承的常量

常量 描述 定义于
CSRF_HEADER 'X-CSRF-Token' 发送 CSRF 令牌的 HTTP 标头的名称。 yii\web\Request
CSRF_MASK_LENGTH 8 CSRF 令牌掩码的长度。** 自 2.0.12 版起已弃用。掩码长度现在等于令牌长度。** yii\web\Request

属性详细信息

隐藏继承的属性

$absoluteUrl 公共属性

当前请求的绝对 URL。

public string $absoluteUrl null
$acceptableContentTypes 公共属性

按质量得分排序的内容类型。得分最高的类型将首先返回。数组键是内容类型,而数组值是相应的质量得分以及标头中给出的其他参数。

$acceptableLanguages 公共属性

按偏好级别排序的语言。第一个元素表示最喜欢的语言。

$authCredentials 公共属性

包含两个元素:- 0: 通过 HTTP 身份验证发送的用户名,如果未提供用户名则为 null - 1: 通过 HTTP 身份验证发送的密码,如果未提供密码则为 null

public 数组 $authCredentials null
$authPassword 公共属性

通过 HTTP 身份验证发送的密码,如果未提供密码则为 null

$authUser 公共属性

通过 HTTP 身份验证发送的用户名,如果未提供用户名则为 null

public 字符串|null $authUser null
$baseUrl 公共属性

应用程序的相对 URL。

public 字符串 $baseUrl null
$bodyParams 公共属性

请求正文中给出的请求参数。

public 数组|对象 $bodyParams null
$contentType 公共属性

请求内容类型。如果此信息不可用,则返回空字符串。

public 字符串 $contentType null
$cookieValidationKey 公共属性

用于 Cookie 验证的密钥。如果 $enableCookieValidation 为 true,则必须设置此属性。

$cookies 公共属性

Cookie 集合。

$csrfCookie 公共属性

创建 CSRF Cookie 的配置。此属性仅在 $enableCsrfValidation$enableCsrfCookie 都为 true 时使用。

public 数组 $csrfCookie = [
    
'httpOnly' => true,
]
$csrfParam 公共属性

用于防止 CSRF 的令牌名称。默认为 '_csrf'。此属性仅在 $enableCsrfValidation 为 true 时使用。

public 字符串 $csrfParam '_csrf'
$csrfToken 公共属性

用于执行 CSRF 验证的令牌。

public 字符串 $csrfToken null
$csrfTokenFromHeader 公共属性

浏览器通过 CSRF_HEADER 发送的 CSRF 令牌。如果没有发送此类标头,则返回 Null。

$eTags 公共属性

实体标签。

public 数组 $eTags null
$enableCookieValidation 公共属性

是否应验证 Cookie 以确保它们未被篡改。默认为 true。

$enableCsrfCookie 公共属性

是否使用 Cookie 持久化 CSRF 令牌。如果为 false,则 CSRF 令牌将存储在会话中,名称为 $csrfParam。请注意,虽然在会话中存储 CSRF 令牌可以提高安全性,但它需要为每个页面启动一个会话,这会降低网站性能。

$enableCsrfValidation 公共属性

是否启用 CSRF(跨站点请求伪造)验证。默认为 true。启用 CSRF 验证后,提交到 Yii Web 应用程序的表单必须来自同一应用程序。否则,将引发 400 HTTP 异常。

注意,此功能要求用户客户端接受 cookie。此外,要使用此功能,通过 POST 方法提交的表单必须包含一个隐藏的输入,其名称由 $csrfParam 指定。您可以使用 yii\helpers\Html::beginForm() 生成此隐藏输入。

在 JavaScript 中,您可以分别通过 yii.getCsrfParam()yii.getCsrfToken() 获取 $csrfParam$csrfToken 的值。yii\web\YiiAsset 资产必须已注册。您还需要使用 yii\helpers\Html::csrfMetaTags() 在页面中包含 CSRF 元标记。

另请参阅

$headers 公共属性

头部集合。

$hostInfo 公共属性

请求 URL 的方案和主机名部分(如果需要,包含端口号)(例如 https://yiiframework.cn),如果无法从 $_SERVER 中获取并且未设置,则为 null。有关此属性的安全相关说明,请参阅 getHostInfo()

public 字符串|null $hostInfo null
$hostName 公共属性

请求 URL 的主机名部分(例如:www.yiiframework.com)。

public 字符串|null $hostName null
$ipHeaders 公共属性 (自版本 2.0.13 起可用)

代理存储真实客户端 IP 的标头列表。不建议在此处放置不安全的标头。要根据 RFC 7239 使用 Forwarded 标头,必须将该标头添加到 $secureHeaders 列表中。标头名称的匹配不区分大小写。

另请参阅

public 字符串[] $ipHeaders = [
    
'X-Forwarded-For',
]
$isAjax 公共属性

这是否是一个 AJAX(XMLHttpRequest)请求。

public 布尔型 $isAjax null
$isDelete 公共属性

这是否是一个 DELETE 请求。

public 布尔型 $isDelete null
$isFlash 公共属性

这是否是一个 Adobe Flash 或 Adobe Flex 请求。

public 布尔型 $isFlash null
$isGet 公共属性

这是否是一个 GET 请求。

public 布尔型 $isGet null
$isHead 公共属性

这是否是一个 HEAD 请求。

public 布尔型 $isHead null
$isOptions 公共属性

这是否是一个 OPTIONS 请求。

public 布尔型 $isOptions null
$isPatch 公共属性

这是否是一个 PATCH 请求。

public 布尔型 $isPatch null
$isPjax 公共属性

这是否是一个 PJAX 请求。

public 布尔型 $isPjax null
$isPost 公共属性

这是否是一个 POST 请求。

public 布尔型 $isPost null
$isPut 公共属性

这是否是一个 PUT 请求。

public boolean $isPut null
$isSecureConnection 公共属性

请求是否通过安全通道(https)发送。

$method 公共属性

请求方法,例如 GET、POST、HEAD、PUT、PATCH、DELETE。返回值将转换为大写。

public string $method null
$methodParam 公共属性

用于指示请求是否为通过 POST 隧道传输的 PUT、PATCH 或 DELETE 请求的 POST 参数名称。默认为 '_method'。

另请参阅

public string $methodParam '_method'
$origin 公共属性

CORS 请求的 URL 来源,如果不可用则为 null

public string|null $origin null
$parsers 公共属性

用于将原始 HTTP 请求正文转换为 $bodyParams 的解析器。数组键是请求的 Content-Types,数组值是 创建解析器对象 的相应配置。解析器必须实现 yii\web\RequestParserInterface

要启用对 JSON 请求的解析,可以使用 yii\web\JsonParser 类,如下例所示

[
    'application/json' => 'yii\web\JsonParser',
]

要注册一个解析所有请求类型的解析器,可以使用 '*' 作为数组键。如果没有任何其他类型匹配,则将使用此解析器作为后备。

另请参阅 getBodyParams()

public array $parsers = []
$pathInfo 公共属性

请求 URL 中入口脚本之后和问号之前的部分。注意,返回的路径信息已进行 URL 解码。

public string $pathInfo null
$port 公共属性

非安全请求的端口号。

public integer $port null
$portHeaders 公共属性 (自版本 2.0.46 起可用)

代理服务器存储真实请求端口的标头列表。不建议在此处放置不安全的标头。要使用 Forwarded Port,必须将其添加到 $secureHeaders 列表中。标头名称的匹配不区分大小写。

另请参阅

public string[] $portHeaders = [
    
'X-Forwarded-Port',
]
$preferredLanguage 公共只读属性

应用程序应使用的语言。

public string getPreferredLanguage ( array $languages = [] )
$queryParams 公共属性

请求 GET 参数值。

public array $queryParams null
$queryString 公共属性

请求 URL 中问号之后的部分。

public string $queryString null
$rawBody 公共属性

请求正文。

public string $rawBody null
$referrer 公共属性

URL 引用来源,如果不可用则为 null。

public string|null $referrer null
$remoteHost 公共属性

远程主机名,如果不可用则为 null

public string|null $remoteHost null

$remoteIP 公共属性

远程 IP 地址,如果不可用则为 null

public string|null $remoteIP null
$scriptFile 公共属性

入口脚本文件路径。

public string $scriptFile null
$scriptUrl 公共属性

入口脚本的相对 URL。

public string $scriptUrl null
$secureHeaders 公共属性 (自版本 2.0.13 起可用)

默认情况下,受信任主机配置影响的标头列表。除非在 $trustedHosts 中显式允许,否则这些标头将被过滤。如果列表包含 Forwarded 标头,则将根据 RFC 7239 进行处理。标头名称的匹配不区分大小写。

另请参阅

public array $secureHeaders = [
    
'X-Forwarded-For',
    
'X-Forwarded-Host',
    
'X-Forwarded-Proto',
    
'X-Forwarded-Port',
    
'Front-End-Https',
    
'X-Rewrite-Url',
    
'X-Original-Host',
]
$securePort 公共属性

安全请求的端口号。

public integer $securePort null
$secureProtocolHeaders 公共属性 (自版本 2.0.13 起可用)

用于检查连接是否通过 HTTPS 建立的标头列表。数组键是标头名称,数组值是指示安全连接的标头值列表。标头名称和值的匹配不区分大小写。不建议在此处放置不安全的标头。

另请参阅

public array $secureProtocolHeaders = [
    
'X-Forwarded-Proto' => [
        
'https',
    ],
    
'Front-End-Https' => [
        
'on',
    ],
]
$serverName 公共属性

服务器名称,如果不可用则为 null。

public string|null $serverName null
$serverPort 公共属性

服务器端口号,如果不可用则为 null。

public integer|null $serverPort null
$trustedHosts 公共属性 (自版本 2.0.13 起可用)

受信任安全相关标头的配置。

数组键是用于匹配客户端的 CIDR 表示法的 IPv4 或 IPv6 IP 地址。

数组值是要信任的标头列表。这些将与 $secureHeaders 匹配,以确定允许指定主机发送哪些标头。标头名称的大小写必须与 $secureHeaders 中指定的一致。

例如,要信任 $secureHeaders 中列出的所有标头,用于 192.168.0.0-192.168.0.254 范围内的 IP 地址,请编写以下内容

[
    '192.168.0.0/24',
]

要仅信任来自 10.0.0.1X-Forwarded-For 标头,请使用

[
    '10.0.0.1' => ['X-Forwarded-For']
]

默认情况下,信任来自所有主机的所有标头,除了 $secureHeaders 中列出的标头。匹配将按顺序尝试,并在 IP 匹配时停止搜索。

信息:匹配使用 yii\validators\IpValidator 执行。有关高级匹配,请参阅 IpValidator::::setRanges()yii\validators\IpValidator::$networks

另请参阅 $secureHeaders

public array $trustedHosts = []
$url 公共属性

当前请求的相对 URL。请注意,返回的 URI 可能会根据客户端进行 URL 编码。

public string $url null
$userAgent 公共属性

用户代理,如果不可用则为 null。

public string|null $userAgent null
$userHost 公共属性

用户主机名,如果不可用则为 null。

public string|null $userHost null
$userIP 公共属性

用户 IP 地址,如果不可用则为 null。

public string|null $userIP null

方法详情

隐藏继承的方法

__call() 公共方法

定义于: yii\base\Component::__call()

调用不是类方法的命名方法。

此方法将检查任何附加的行为是否具有指定名称的方法,如果可用则执行它。

不要直接调用此方法,因为它是一个 PHP 魔术方法,当调用未知方法时会隐式调用。

public mixed __call ( $name, $params )
$name string

方法名

$params array

方法参数

返回值 mixed

方法返回值

抛出异常 yii\base\UnknownMethodException

调用未知方法时

                public function __call($name, $params)
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $object) {
        if ($object->hasMethod($name)) {
            return call_user_func_array([$object, $name], $params);
        }
    }
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__clone() 公共方法

定义于: yii\base\Component::__clone()

此方法在通过克隆现有对象创建对象后被调用。

它会移除所有行为,因为它们附加到旧对象上。

public void __clone ( )

                public function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = null;
}

            
__construct() 公共方法

定义于: yii\base\BaseObject::__construct()

构造函数。

默认实现执行两件事

  • 使用给定的配置 $config 初始化对象。
  • 调用 init()

如果此方法在子类中被覆盖,建议

  • 构造函数的最后一个参数是一个配置数组,就像这里的 $config 一样。
  • 在构造函数的末尾调用父类的实现。
public void __construct ( $config = [] )
$config array

将用于初始化对象属性的名称-值对

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() 公共方法

定义于: yii\base\Component::__get()

返回组件属性的值。

此方法将按照以下顺序检查并相应地采取措施

  • 由 getter 定义的属性:返回 getter 的结果
  • 行为的属性:返回行为属性的值

不要直接调用此方法,因为它是一个 PHP 魔术方法,当执行 $value = $component->property; 时会隐式调用。

另请参阅 __set()

public mixed __get ( $name )
$name string

属性名称

返回值 mixed

属性值或行为属性的值

抛出异常 yii\base\UnknownPropertyException

如果未定义属性

抛出异常 yii\base\InvalidCallException

如果属性为只写。

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        // read property, e.g. getName()
        return $this->$getter();
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name;
        }
    }
    if (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() 公共方法

定义于: yii\base\Component::__isset()

检查属性是否已设置,即定义且不为 null。

此方法将按照以下顺序检查并相应地采取措施

  • 由 setter 定义的属性:返回属性是否已设置
  • 行为的属性:返回属性是否已设置
  • 对于不存在的属性返回 false

不要直接调用此方法,因为它是一个 PHP 魔术方法,当执行 isset($component->property) 时会隐式调用。

另请参阅 https://php.ac.cn/manual/en/function.isset.php

public boolean __isset ( $name )
$name string

属性名称或事件名称

返回值 boolean

指定的属性是否已设置

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name !== null;
        }
    }
    return false;
}

            
__set() 公共方法

定义于: yii\base\Component::__set()

设置组件属性的值。

此方法将按照以下顺序检查并相应地采取措施

  • 由 setter 定义的属性:设置属性值
  • "on xyz" 格式的事件:将处理程序附加到 "xyz" 事件
  • "as xyz" 格式的行为:附加名为 "xyz" 的行为
  • 行为的属性:设置行为属性的值

不要直接调用此方法,因为它是一个 PHP 魔术方法,当执行 $component->property = $value; 时会隐式调用。

另请参阅 __get()

public void __set ( $name, $value )
$name string

属性名称或事件名称

$value mixed

属性值

抛出异常 yii\base\UnknownPropertyException

如果未定义属性

抛出异常 yii\base\InvalidCallException

如果属性为只读。

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        // set property
        $this->$setter($value);
        return;
    } elseif (strncmp($name, 'on ', 3) === 0) {
        // on event: attach event handler
        $this->on(trim(substr($name, 3)), $value);
        return;
    } elseif (strncmp($name, 'as ', 3) === 0) {
        // as behavior: attach behavior
        $name = trim(substr($name, 3));
        $this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = $value;
            return;
        }
    }
    if (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}

            
__unset() 公共方法

定义于: yii\base\Component::__unset()

将组件属性设置为 null。

此方法将按照以下顺序检查并相应地采取措施

  • 由 setter 定义的属性:将属性值设置为 null
  • 行为的属性:将属性值设置为 null

不要直接调用此方法,因为它是一个 PHP 魔术方法,当执行 unset($component->property) 时会隐式调用。

另请参阅 https://php.ac.cn/manual/en/function.unset.php

public void __unset ( $name )
$name string

属性名称

抛出异常 yii\base\InvalidCallException

如果属性为只读。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = null;
            return;
        }
    }
    throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}

            
attachBehavior() 公共方法

定义于: yii\base\Component::attachBehavior()

将行为附加到此组件。

此方法将根据给定的配置创建行为对象。之后,行为对象将通过调用 yii\base\Behavior::attach() 方法附加到此组件。

另请参阅 detachBehavior()

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name string

行为的名称。

$behavior string|array|yii\base\Behavior

行为配置。可以是以下之一

返回值 yii\base\Behavior

行为对象

                public function attachBehavior($name, $behavior)
{
    $this->ensureBehaviors();
    return $this->attachBehaviorInternal($name, $behavior);
}

            
attachBehaviors() 公共方法

定义于: yii\base\Component::attachBehaviors()

将行为列表附加到组件。

每个行为都由其名称索引,并且应该是一个 yii\base\Behavior 对象、指定行为类的字符串或用于创建行为的配置数组。

另请参阅 attachBehavior()

public void attachBehaviors ( $behaviors )
$behaviors array

要附加到组件的行为列表

                public function attachBehaviors($behaviors)
{
    $this->ensureBehaviors();
    foreach ($behaviors as $name => $behavior) {
        $this->attachBehaviorInternal($name, $behavior);
    }
}

            
behaviors() 公共方法

定义于: yii\base\Component::behaviors()

返回此组件应具有的行为列表。

子类可以重写此方法来指定它们希望表现出的行为。

此方法的返回值应为行为对象或配置的数组,并以行为名称为索引。行为配置可以是指定行为类的字符串,也可以是以下结构的数组

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

请注意,行为类必须扩展自 yii\base\Behavior。行为可以使用名称或匿名方式附加。当使用名称作为数组键时,可以使用此名称,稍后可以使用 getBehavior() 获取行为,或使用 detachBehavior() 分离行为。匿名行为无法检索或分离。

此方法中声明的行为将自动附加到组件(按需)。

public 数组 behaviors ( )
返回值 array

行为配置。

                public function behaviors()
{
    return [];
}

            
canGetProperty() 公共方法

定义于: yii\base\Component::canGetProperty()

返回一个值,指示是否可以读取属性。

如果满足以下条件,则可以读取属性

  • 该类具有与指定名称关联的 getter 方法(在这种情况下,属性名称不区分大小写);
  • 该类具有与指定名称相同的成员变量(当 $checkVars 为 true 时);
  • 附加的行为具有给定名称的可读属性(当 $checkBehaviors 为 true 时)。

另请参阅 canSetProperty()

public 布尔值 canGetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

属性名称

$checkVars boolean

是否将成员变量视为属性

$checkBehaviors boolean

是否将行为的属性视为此组件的属性

返回值 boolean

属性是否可读

                public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canGetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
canSetProperty() 公共方法

定义于: yii\base\Component::canSetProperty()

返回一个值,指示是否可以设置属性。

如果满足以下条件,则可以写入属性

  • 该类具有与指定名称关联的 setter 方法(在这种情况下,属性名称不区分大小写);
  • 该类具有与指定名称相同的成员变量(当 $checkVars 为 true 时);
  • 附加的行为具有给定名称的可写属性(当 $checkBehaviors 为 true 时)。

另请参阅 canGetProperty()

public 布尔值 canSetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

属性名称

$checkVars boolean

是否将成员变量视为属性

$checkBehaviors boolean

是否将行为的属性视为此组件的属性

返回值 boolean

属性是否可写

                public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canSetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
className() 公共静态方法
自 2.0.14 版本起已弃用。在 PHP >=5.5 上,请改用 ::class

定义于: yii\base\BaseObject::className()

返回此类的完全限定名称。

public static 字符串 className ( )
返回值 string

此类的完全限定名称。

                public static function className()
{
    return get_called_class();
}

            
createCsrfCookie() 受保护方法

创建包含随机生成的 CSRF 令牌的 Cookie。

$csrfCookie 中指定的初始值将应用于生成的 Cookie。

另请参阅 $enableCsrfValidation

protected yii\web\Cookie createCsrfCookie ( $token )
$token string

CSRF 令牌

返回值 yii\web\Cookie

生成的 Cookie

                protected function createCsrfCookie($token)
{
    $options = $this->csrfCookie;
    return Yii::createObject(array_merge($options, [
        'class' => 'yii\web\Cookie',
        'name' => $this->csrfParam,
        'value' => $token,
    ]));
}

            
detachBehavior() 公共方法

定义于: yii\base\Component::detachBehavior()

从组件中分离行为。

将调用行为的 yii\base\Behavior::detach() 方法。

public yii\base\Behavior|null detachBehavior ( $name )
$name string

行为的名称。

返回值 yii\base\Behavior|null

分离的行为。如果行为不存在,则为 Null。

                public function detachBehavior($name)
{
    $this->ensureBehaviors();
    if (isset($this->_behaviors[$name])) {
        $behavior = $this->_behaviors[$name];
        unset($this->_behaviors[$name]);
        $behavior->detach();
        return $behavior;
    }
    return null;
}

            
detachBehaviors() 公共方法

定义于: yii\base\Component::detachBehaviors()

从组件中分离所有行为。

public void detachBehaviors ( )

                public function detachBehaviors()
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $name => $behavior) {
        $this->detachBehavior($name);
    }
}

            
ensureBehaviors() 公共方法

定义于: yii\base\Component::ensureBehaviors()

确保在 behaviors() 中声明的行为已附加到此组件。

public void ensureBehaviors ( )

                public function ensureBehaviors()
{
    if ($this->_behaviors === null) {
        $this->_behaviors = [];
        foreach ($this->behaviors() as $name => $behavior) {
            $this->attachBehaviorInternal($name, $behavior);
        }
    }
}

            
filterHeaders() 受保护方法 (自 2.0.13 版本起可用)

根据 $trustedHosts 过滤标头。

protected void filterHeaders ( yii\web\HeaderCollection $headerCollection )
$headerCollection yii\web\HeaderCollection

                protected function filterHeaders(HeaderCollection $headerCollection)
{
    $trustedHeaders = $this->getTrustedHeaders();
    // remove all secure headers unless they are trusted
    foreach ($this->secureHeaders as $secureHeader) {
        if (!in_array($secureHeader, $trustedHeaders)) {
            $headerCollection->remove($secureHeader);
        }
    }
}

            
generateCsrfToken() 受保护方法

生成用于执行 CSRF 验证的未掩码随机令牌。

protected 字符串 generateCsrfToken ( )
返回值 string

CSRF 验证的随机令牌。

                protected function generateCsrfToken()
{
    $token = Yii::$app->getSecurity()->generateRandomString();
    if ($this->enableCsrfCookie) {
        $cookie = $this->createCsrfCookie($token);
        Yii::$app->getResponse()->getCookies()->add($cookie);
    } else {
        Yii::$app->getSession()->set($this->csrfParam, $token);
    }
    return $token;
}

            
get() 公共方法

返回具有给定名称的 GET 参数。如果未指定名称,则返回所有 GET 参数的数组。

public 数组|混合 get ( $name null, $defaultValue null )
$name string

参数名称

$defaultValue mixed

如果参数不存在,则为默认参数值。

                public function get($name = null, $defaultValue = null)
{
    if ($name === null) {
        return $this->getQueryParams();
    }
    return $this->getQueryParam($name, $defaultValue);
}

            
getAbsoluteUrl() 公共方法

返回当前请求的绝对 URL。

这是 $hostInfo$url 连接的快捷方式。

public 字符串 getAbsoluteUrl ( )
返回值 string

当前请求的绝对 URL。

                public function getAbsoluteUrl()
{
    return $this->getHostInfo() . $this->getUrl();
}

            
getAcceptableContentTypes() 公共方法

返回最终用户可接受的内容类型。

这由 Accept HTTP 头确定。例如,

$_SERVER['HTTP_ACCEPT'] = 'text/plain; q=0.5, application/json; version=1.0, application/xml; version=2.0;';
$types = $request->getAcceptableContentTypes();
print_r($types);
// displays:
// [
//     'application/json' => ['q' => 1, 'version' => '1.0'],
//      'application/xml' => ['q' => 1, 'version' => '2.0'],
//           'text/plain' => ['q' => 0.5],
// ]
public 数组 getAcceptableContentTypes ( )
返回值 array

按质量得分排序的内容类型。得分最高的类型将首先返回。数组键是内容类型,而数组值是相应的质量得分以及标头中给出的其他参数。

                public function getAcceptableContentTypes()
{
    if ($this->_contentTypes === null) {
        if ($this->headers->get('Accept') !== null) {
            $this->_contentTypes = $this->parseAcceptHeader($this->headers->get('Accept'));
        } else {
            $this->_contentTypes = [];
        }
    }
    return $this->_contentTypes;
}

            
getAcceptableLanguages() 公共方法

返回最终用户可接受的语言。

这由 Accept-Language HTTP 头确定。

public 数组 getAcceptableLanguages ( )
返回值 array

按偏好级别排序的语言。第一个元素表示最喜欢的语言。

                public function getAcceptableLanguages()
{
    if ($this->_languages === null) {
        if ($this->headers->has('Accept-Language')) {
            $this->_languages = array_keys($this->parseAcceptHeader($this->headers->get('Accept-Language')));
        } else {
            $this->_languages = [];
        }
    }
    return $this->_languages;
}

            
getAuthCredentials() 公共方法 (自版本 2.0.13 起可用)

另请参阅

public 数组 getAuthCredentials ( )
返回值 array

包含两个元素

  • 0: 通过 HTTP 认证发送的用户名,如果未提供用户名则为 null
  • 1: 通过 HTTP 认证发送的密码,如果未提供密码则为 null

                public function getAuthCredentials()
{
    $username = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : null;
    $password = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : null;
    if ($username !== null || $password !== null) {
        return [$username, $password];
    }
    /**
     * Apache with php-cgi does not pass HTTP Basic authentication to PHP by default.
     * To make it work, add one of the following lines to to your .htaccess file:
     *
     * SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
     * --OR--
     * RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
     */
    $auth_token = $this->getHeaders()->get('Authorization');
    if ($auth_token !== null && strncasecmp($auth_token, 'basic', 5) === 0) {
        $parts = array_map(function ($value) {
            return strlen($value) === 0 ? null : $value;
        }, explode(':', base64_decode(mb_substr($auth_token, 6)), 2));
        if (count($parts) < 2) {
            return [$parts[0], null];
        }
        return $parts;
    }
    return [null, null];
}

            
getAuthPassword() 公共方法

另请参阅 getAuthCredentials() 以一次获取用户名和密码。

public 字符串|null getAuthPassword ( )
返回值 string|null

通过 HTTP 认证发送的密码,如果未提供密码则为 null

                public function getAuthPassword()
{
    return $this->getAuthCredentials()[1];
}

            
getAuthUser() 公共方法

另请参阅 getAuthCredentials() 以一次获取用户名和密码。

public 字符串|null getAuthUser ( )
返回值 string|null

通过 HTTP 认证发送的用户名,如果未提供用户名则为 null

                public function getAuthUser()
{
    return $this->getAuthCredentials()[0];
}

            
getBaseUrl() 公共方法

返回应用程序的相对 URL。

这类似于 $scriptUrl,不同之处在于它不包含脚本文件名,并且删除了结尾的斜杠。

另请参阅 setScriptUrl()

public 字符串 getBaseUrl ( )
返回值 string

应用程序的相对 URL

                public function getBaseUrl()
{
    if ($this->_baseUrl === null) {
        $this->_baseUrl = rtrim(dirname($this->getScriptUrl()), '\\/');
    }
    return $this->_baseUrl;
}

            
getBehavior() 公共方法

定义于: yii\base\Component::getBehavior()

返回命名的行为对象。

public yii\base\Behavior|null getBehavior ( $name )
$name string

行为名称

返回值 yii\base\Behavior|null

行为对象,如果行为不存在则为 null

                public function getBehavior($name)
{
    $this->ensureBehaviors();
    return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}

            
getBehaviors() 公共方法

定义于: yii\base\Component::getBehaviors()

返回附加到此组件的所有行为。

public yii\base\Behavior[] getBehaviors ( )
返回值 yii\base\Behavior[]

附加到此组件的行为列表

                public function getBehaviors()
{
    $this->ensureBehaviors();
    return $this->_behaviors;
}

            
getBodyParam() 公共方法

返回命名的请求正文参数值。

如果参数不存在,则返回传递给此方法的第二个参数。

另请参阅

public 混合 getBodyParam ( $name, $defaultValue null )
$name string

参数名称

$defaultValue mixed

如果参数不存在,则为默认参数值。

返回值 mixed

参数值

                public function getBodyParam($name, $defaultValue = null)
{
    $params = $this->getBodyParams();
    if (is_object($params)) {
        // unable to use `ArrayHelper::getValue()` due to different dots in key logic and lack of exception handling
        try {
            return isset($params->{$name}) ? $params->{$name} : $defaultValue;
        } catch (\Exception $e) {
            return $defaultValue;
        }
    }
    return isset($params[$name]) ? $params[$name] : $defaultValue;
}

            
getBodyParams() 公共方法

返回请求正文中给出的请求参数。

请求参数是使用 $parsers 属性中配置的解析器确定的。如果当前 $contentType 未配置任何解析器,则它使用 PHP 函数 mb_parse_str() 来解析 请求体

另请参阅

public 数组|对象 getBodyParams ( )
返回值 array|object

请求正文中给出的请求参数。

抛出异常 yii\base\InvalidConfigException

如果注册的解析器未实现 yii\web\RequestParserInterface

                public function getBodyParams()
{
    if ($this->_bodyParams === null) {
        if (isset($_POST[$this->methodParam])) {
            $this->_bodyParams = $_POST;
            unset($this->_bodyParams[$this->methodParam]);
            return $this->_bodyParams;
        }
        $rawContentType = $this->getContentType();
        if (($pos = strpos((string)$rawContentType, ';')) !== false) {
            // e.g. text/html; charset=UTF-8
            $contentType = substr($rawContentType, 0, $pos);
        } else {
            $contentType = $rawContentType;
        }
        if (isset($this->parsers[$contentType])) {
            $parser = Yii::createObject($this->parsers[$contentType]);
            if (!($parser instanceof RequestParserInterface)) {
                throw new InvalidConfigException("The '$contentType' request parser is invalid. It must implement the yii\\web\\RequestParserInterface.");
            }
            $this->_bodyParams = $parser->parse($this->getRawBody(), $rawContentType);
        } elseif (isset($this->parsers['*'])) {
            $parser = Yii::createObject($this->parsers['*']);
            if (!($parser instanceof RequestParserInterface)) {
                throw new InvalidConfigException('The fallback request parser is invalid. It must implement the yii\\web\\RequestParserInterface.');
            }
            $this->_bodyParams = $parser->parse($this->getRawBody(), $rawContentType);
        } elseif ($this->getMethod() === 'POST') {
            // PHP has already parsed the body so we have all params in $_POST
            $this->_bodyParams = $_POST;
        } else {
            $this->_bodyParams = [];
            mb_parse_str($this->getRawBody(), $this->_bodyParams);
        }
    }
    return $this->_bodyParams;
}

            
getContentType() 公共方法

返回请求内容类型 Content-Type 标头字段指示 getRawBody() 中包含的数据的 MIME 类型,或者在 HEAD 方法的情况下,如果请求为 GET,则会发送的媒体类型。

有关用户期望在响应中获得的 MIME 类型,请参阅 $acceptableContentTypes

public 字符串 getContentType ( )
返回值 string

请求内容类型。如果此信息不可用,则返回空字符串。

                public function getContentType()
{
    if (isset($_SERVER['CONTENT_TYPE'])) {
        return $_SERVER['CONTENT_TYPE'];
    }
    //fix bug https://bugs.php.net/bug.php?id=66606
    return $this->headers->get('Content-Type') ?: '';
}

            
getCookies() 公共方法

返回 Cookie 集合。

通过返回的 Cookie 集合,您可以使用以下语法访问 Cookie

$cookie = $request->cookies['name']
if ($cookie !== null) {
    $value = $cookie->value;
}

// alternatively
$value = $request->cookies->getValue('name');
public yii\web\CookieCollection getCookies ( )
返回值 yii\web\CookieCollection

Cookie 集合。

                public function getCookies()
{
    if ($this->_cookies === null) {
        $this->_cookies = new CookieCollection($this->loadCookies(), [
            'readOnly' => true,
        ]);
    }
    return $this->_cookies;
}

            
getCsrfToken() 公共方法

返回用于执行 CSRF 验证的令牌。

此令牌以一种防止 BREACH 攻击 的方式生成。它可以通过 HTML 表单的隐藏字段或 HTTP 标头值传递,以支持 CSRF 验证。

public string getCsrfToken ( $regenerate false )
$regenerate boolean

是否重新生成 CSRF 令牌。当此参数为 true 时,每次调用此方法都会生成一个新的 CSRF 令牌并将其持久化(在会话或 Cookie 中)。

返回值 string

用于执行 CSRF 验证的令牌。

                public function getCsrfToken($regenerate = false)
{
    if ($this->_csrfToken === null || $regenerate) {
        $token = $this->loadCsrfToken();
        if ($regenerate || empty($token)) {
            $token = $this->generateCsrfToken();
        }
        $this->_csrfToken = Yii::$app->security->maskToken($token);
    }
    return $this->_csrfToken;
}

            
getCsrfTokenFromHeader() 公共方法

public string|null getCsrfTokenFromHeader ( )
返回值 string|null

浏览器通过 CSRF_HEADER 发送的 CSRF 令牌。如果没有发送此类标头,则返回 Null。

                public function getCsrfTokenFromHeader()
{
    return $this->headers->get(static::CSRF_HEADER);
}

            
getETags() 公共方法

获取 Etags。

public array getETags ( )
返回值 array

实体标签

                public function getETags()
{
    if ($this->headers->has('If-None-Match')) {
        return preg_split('/[\s,]+/', str_replace('-gzip', '', $this->headers->get('If-None-Match')), -1, PREG_SPLIT_NO_EMPTY);
    }
    return [];
}

            
getHeaders() 公共方法

返回标头集合。

标头集合包含传入的 HTTP 标头。

public yii\web\HeaderCollection getHeaders ( )
返回值 yii\web\HeaderCollection

标头集合

                public function getHeaders()
{
    if ($this->_headers === null) {
        $this->_headers = new HeaderCollection();
        if (function_exists('getallheaders')) {
            $headers = getallheaders();
            foreach ($headers as $name => $value) {
                $this->_headers->add($name, $value);
            }
        } elseif (function_exists('http_get_request_headers')) {
            $headers = http_get_request_headers();
            foreach ($headers as $name => $value) {
                $this->_headers->add($name, $value);
            }
        } else {
            // ['prefix' => length]
            $headerPrefixes = ['HTTP_' => 5, 'REDIRECT_HTTP_' => 14];
            foreach ($_SERVER as $name => $value) {
                foreach ($headerPrefixes as $prefix => $length) {
                    if (strncmp($name, $prefix, $length) === 0) {
                        $name = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, $length)))));
                        $this->_headers->add($name, $value);
                        continue 2;
                    }
                }
            }
        }
        $this->filterHeaders($this->_headers);
    }
    return $this->_headers;
}

            
getHostInfo() 公共方法

返回当前请求 URL 的方案和主机部分。

返回的 URL 没有结尾斜杠。

默认情况下,此值基于用户请求信息。此方法将返回 $_SERVER['HTTP_HOST'] 的值(如果可用),否则返回 $_SERVER['SERVER_NAME']。您可能需要查看 PHP 文档 以获取有关这些变量的更多信息。

您可以通过设置 hostInfo 属性来显式指定它。

警告:根据服务器配置,此信息可能不可靠,并且 可能被发送 HTTP 请求的用户伪造。如果 Web 服务器配置为独立于 Host 标头的值提供相同的站点,则此值不可靠。在这种情况下,您应该修复您的 Web 服务器配置或通过设置 hostInfo 属性来显式设置值。如果您无法访问服务器配置,则可以在应用程序级别设置 yii\filters\HostControl 过滤器以防止此类攻击。

另请参阅 setHostInfo()

public string|null getHostInfo ( )
返回值 string|null

请求 URL 的方案和主机名部分(如果需要,包括端口号)(例如:https://yiiframework.cn),如果无法从 $_SERVER 中获取且未设置,则为 null。

                public function getHostInfo()
{
    if ($this->_hostInfo === null) {
        $secure = $this->getIsSecureConnection();
        $http = $secure ? 'https' : 'http';
        if ($this->getSecureForwardedHeaderTrustedPart('host') !== null) {
            $this->_hostInfo = $http . '://' . $this->getSecureForwardedHeaderTrustedPart('host');
        } elseif ($this->headers->has('X-Forwarded-Host')) {
            $this->_hostInfo = $http . '://' . trim(explode(',', $this->headers->get('X-Forwarded-Host'))[0]);
        } elseif ($this->headers->has('X-Original-Host')) {
            $this->_hostInfo = $http . '://' . trim(explode(',', $this->headers->get('X-Original-Host'))[0]);
        } elseif ($this->headers->has('Host')) {
            $this->_hostInfo = $http . '://' . $this->headers->get('Host');
        } elseif (isset($_SERVER['SERVER_NAME'])) {
            $this->_hostInfo = $http . '://' . $_SERVER['SERVER_NAME'];
            $port = $secure ? $this->getSecurePort() : $this->getPort();
            if (($port !== 80 && !$secure) || ($port !== 443 && $secure)) {
                $this->_hostInfo .= ':' . $port;
            }
        }
    }
    return $this->_hostInfo;
}

            
getHostName() 公共方法 (自版本 2.0.10 起可用)

返回当前请求 URL 的主机部分。

该值根据当前的 hostInfo 属性计算得出。

警告:此值的内容可能不可靠,具体取决于服务器配置。请参阅 getHostInfo() 以获取更多信息。

另请参阅 getHostInfo()

public string|null getHostName ( )
返回值 string|null

请求 URL 的主机名部分(例如 www.yiiframework.com

                public function getHostName()
{
    if ($this->_hostName === null) {
        $this->_hostName = parse_url((string)$this->getHostInfo(), PHP_URL_HOST);
    }
    return $this->_hostName;
}

            
getIpValidator() 受保护的方法 (自版本 2.0.13 起可用)

创建 yii\validators\IpValidator 的实例。

您可以覆盖此方法以调整验证器或实现不同的匹配策略。

protected yii\validators\IpValidator getIpValidator ( )

                protected function getIpValidator()
{
    return new IpValidator();
}

            
getIsAjax() 公共方法

返回这是否为 AJAX (XMLHttpRequest) 请求。

请注意,在跨域请求的情况下,浏览器默认情况下不会设置 X-Requested-With 标头:https://stackoverflow.com/questions/8163703/cross-domain-ajax-doesnt-send-x-requested-with-header

如果您使用的是 fetch(),请手动传递标头

fetch(url, {
   method: 'GET',
   headers: {'X-Requested-With': 'XMLHttpRequest'}
})
public boolean getIsAjax ( )
返回值 boolean

这是否是一个 AJAX(XMLHttpRequest)请求。

                public function getIsAjax()
{
    return $this->headers->get('X-Requested-With') === 'XMLHttpRequest';
}

            
getIsConsoleRequest() 公共方法

定义于: yii\base\Request::getIsConsoleRequest()

返回一个值,指示当前请求是否通过命令行发出。

public boolean getIsConsoleRequest ( )
返回值 boolean

指示当前请求是否通过控制台发出的值

                public function getIsConsoleRequest()
{
    return $this->_isConsoleRequest !== null ? $this->_isConsoleRequest : PHP_SAPI === 'cli';
}

            
getIsDelete() 公共方法

返回这是否为 DELETE 请求。

public boolean getIsDelete ( )
返回值 boolean

这是否是一个 DELETE 请求。

                public function getIsDelete()
{
    return $this->getMethod() === 'DELETE';
}

            
getIsFlash() 公共方法

返回这是否为 Adobe Flash 或 Flex 请求。

public boolean getIsFlash ( )
返回值 boolean

这是否是一个 Adobe Flash 或 Adobe Flex 请求。

                public function getIsFlash()
{
    $userAgent = $this->headers->get('User-Agent', '');
    return stripos($userAgent, 'Shockwave') !== false
        || stripos($userAgent, 'Flash') !== false;
}

            
getIsGet() 公共方法

返回这是否为 GET 请求。

public boolean getIsGet ( )
返回值 boolean

这是否是一个 GET 请求。

                public function getIsGet()
{
    return $this->getMethod() === 'GET';
}

            
getIsHead() 公共方法

返回这是否为 HEAD 请求。

public boolean getIsHead ( )
返回值 boolean

这是否是一个 HEAD 请求。

                public function getIsHead()
{
    return $this->getMethod() === 'HEAD';
}

            
getIsOptions() 公共方法

返回这是否为 OPTIONS 请求。

public boolean getIsOptions ( )
返回值 boolean

这是否是一个 OPTIONS 请求。

                public function getIsOptions()
{
    return $this->getMethod() === 'OPTIONS';
}

            
getIsPatch() 公共方法

返回这是否为 PATCH 请求。

public boolean getIsPatch ( )
返回值 boolean

这是否是一个 PATCH 请求。

                public function getIsPatch()
{
    return $this->getMethod() === 'PATCH';
}

            
getIsPjax() 公共方法

返回这是否为 PJAX 请求。

public boolean getIsPjax ( )
返回值 boolean

是否为 PJAX 请求

                public function getIsPjax()
{
    return $this->getIsAjax() && $this->headers->has('X-Pjax');
}

            
getIsPost() 公共方法

返回这是否为 POST 请求。

public boolean getIsPost ( )
返回值 boolean

这是否是一个 POST 请求。

                public function getIsPost()
{
    return $this->getMethod() === 'POST';
}

            
getIsPut() 公共方法

返回这是否为 PUT 请求。

public boolean getIsPut ( )
返回值 boolean

这是否是一个 PUT 请求。

                public function getIsPut()
{
    return $this->getMethod() === 'PUT';
}

            
getIsSecureConnection() 公共方法

返回请求是否通过安全通道 (https) 发送。

public boolean getIsSecureConnection ( )
返回值 boolean

如果请求是通过安全通道(https)发送的

                public function getIsSecureConnection()
{
    if (isset($_SERVER['HTTPS']) && (strcasecmp($_SERVER['HTTPS'], 'on') === 0 || $_SERVER['HTTPS'] == 1)) {
        return true;
    }
    if (($proto = $this->getSecureForwardedHeaderTrustedPart('proto')) !== null) {
        return strcasecmp($proto, 'https') === 0;
    }
    foreach ($this->secureProtocolHeaders as $header => $values) {
        if (($headerValue = $this->headers->get($header, null)) !== null) {
            foreach ($values as $value) {
                if (strcasecmp($headerValue, $value) === 0) {
                    return true;
                }
            }
        }
    }
    return false;
}

            
getMethod() 公共方法

返回当前请求的方法(例如 GET、POST、HEAD、PUT、PATCH、DELETE)。

public string getMethod ( )
返回值 string

请求方法,例如 GET、POST、HEAD、PUT、PATCH、DELETE。返回值将转换为大写。

                public function getMethod()
{
    if (
        isset($_POST[$this->methodParam])
        // Never allow to downgrade request from WRITE methods (POST, PATCH, DELETE, etc)
        // to read methods (GET, HEAD, OPTIONS) for security reasons.
        && !in_array(strtoupper($_POST[$this->methodParam]), ['GET', 'HEAD', 'OPTIONS'], true)
    ) {
        return strtoupper($_POST[$this->methodParam]);
    }
    if ($this->headers->has('X-Http-Method-Override')) {
        return strtoupper($this->headers->get('X-Http-Method-Override'));
    }
    if (isset($_SERVER['REQUEST_METHOD'])) {
        return strtoupper($_SERVER['REQUEST_METHOD']);
    }
    return 'GET';
}

            
getOrigin() 公共方法(自版本 2.0.13 起可用)

返回 CORS 请求的 URL 来源。

返回值取自浏览器发送的 Origin header

请注意,origin 请求头指示获取请求的来源。它不包含任何路径信息,只包含服务器名称。它与 CORS 请求以及 POST 请求一起发送。它类似于 referer 头,但与该头不同,它不会泄露整个路径。有关更多信息,请参阅 https://mdn.org.cn/en-US/docs/Web/HTTP/Headers/Origin

另请参阅 getHeaders()

public string|null getOrigin ( )
返回值 string|null

CORS 请求的 URL 来源,如果不可用则为 null

                public function getOrigin()
{
    return $this->getHeaders()->get('origin');
}

            
getPathInfo() 公共方法

返回当前请求 URL 的路径信息。

路径信息指的是入口脚本之后和问号(查询字符串)之前的部分。开头和结尾的斜杠都已删除。

public string getPathInfo ( )
返回值 string

请求 URL 中入口脚本之后和问号之前的部分。注意,返回的路径信息已进行 URL 解码。

抛出异常 yii\base\InvalidConfigException

如果由于意外的服务器配置无法确定路径信息

                public function getPathInfo()
{
    if ($this->_pathInfo === null) {
        $this->_pathInfo = $this->resolvePathInfo();
    }
    return $this->_pathInfo;
}

            
getPort() 公共方法

返回用于不安全请求的端口。

默认为 80,或者如果当前请求不安全,则由服务器指定的端口。

另请参阅 setPort()

public integer getPort ( )
返回值 integer

非安全请求的端口号。

                public function getPort()
{
    if ($this->_port === null) {
        $serverPort = $this->getServerPort();
        $this->_port = !$this->getIsSecureConnection() && $serverPort !== null ? $serverPort : 80;
    }
    return $this->_port;
}

            
getPreferredLanguage() 公共方法

返回此应用程序应使用的用户首选语言。

语言解析基于用户首选语言和应用程序支持的语言。该方法将尝试找到最佳匹配。

public string getPreferredLanguage ( array $languages = [] )
$languages array

应用程序支持的语言列表。如果为空,则在不进行进一步处理的情况下返回当前应用程序语言。

返回值 string

应用程序应使用的语言。

                public function getPreferredLanguage(array $languages = [])
{
    if (empty($languages)) {
        return Yii::$app->language;
    }
    foreach ($this->getAcceptableLanguages() as $acceptableLanguage) {
        $acceptableLanguage = str_replace('_', '-', strtolower($acceptableLanguage));
        foreach ($languages as $language) {
            $normalizedLanguage = str_replace('_', '-', strtolower($language));
            if (
                $normalizedLanguage === $acceptableLanguage // en-us==en-us
                || strpos($acceptableLanguage, $normalizedLanguage . '-') === 0 // en==en-us
                || strpos($normalizedLanguage, $acceptableLanguage . '-') === 0 // en-us==en
            ) {
                return $language;
            }
        }
    }
    return reset($languages);
}

            
getQueryParam() 公共方法

返回命名的 GET 参数值。

如果 GET 参数不存在,则将传递给此方法的第二个参数返回。

另请参阅 getBodyParam()

public mixed getQueryParam ( $name, $defaultValue null )
$name string

GET 参数名称。

$defaultValue mixed

如果 GET 参数不存在,则为默认参数值。

返回值 mixed

GET 参数值

                public function getQueryParam($name, $defaultValue = null)
{
    $params = $this->getQueryParams();
    return isset($params[$name]) ? $params[$name] : $defaultValue;
}

            
getQueryParams() 公共方法

返回 $queryString 中给出的请求参数。

如果参数未显式设置,则此方法将返回 $_GET 的内容。

另请参阅 setQueryParams()

public array getQueryParams ( )
返回值 array

请求 GET 参数值。

                public function getQueryParams()
{
    if ($this->_queryParams === null) {
        return $_GET;
    }
    return $this->_queryParams;
}

            
getQueryString() 公共方法

返回请求 URL 中问号后面的部分。

public string getQueryString ( )
返回值 string

请求 URL 中问号之后的部分

                public function getQueryString()
{
    return isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '';
}

            
getRawBody() 公共方法

返回原始 HTTP 请求正文。

public string getRawBody ( )
返回值 string

请求体

                public function getRawBody()
{
    if ($this->_rawBody === null) {
        $this->_rawBody = file_get_contents('php://input');
    }
    return $this->_rawBody;
}

            
getReferrer() 公共方法

返回 URL 来源。

public string|null getReferrer ( )
返回值 string|null

URL 来源,如果不可用则为 null

                public function getReferrer()
{
    return $this->headers->get('Referer');
}

            
getRemoteHost() 公共方法(自版本 2.0.13 起可用)

返回此连接另一端的计算机名称。

这始终是下一跳,任何标头都会被忽略。

另请参阅

public string|null getRemoteHost ( )
返回值 string|null

远程主机名,如果不可用则为 null

                public function getRemoteHost()
{
    return isset($_SERVER['REMOTE_HOST']) ? $_SERVER['REMOTE_HOST'] : null;
}

            
getRemoteIP() 公共方法 (自版本 2.0.13 起可用)

返回此连接另一端的 IP 地址。

这始终是下一跳,任何标头都会被忽略。

public string|null getRemoteIP ( )
返回值 string|null

远程 IP 地址,如果不可用则为 null

                public function getRemoteIP()
{
    return isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : null;
}

            
getScriptFile() 公共方法

返回入口脚本文件路径。

默认实现将简单地返回 $_SERVER['SCRIPT_FILENAME']

public string getScriptFile ( )
返回值 string

入口脚本文件路径

抛出异常 yii\base\InvalidConfigException

                public function getScriptFile()
{
    if (isset($this->_scriptFile)) {
        return $this->_scriptFile;
    }
    if (isset($_SERVER['SCRIPT_FILENAME'])) {
        return $_SERVER['SCRIPT_FILENAME'];
    }
    throw new InvalidConfigException('Unable to determine the entry script file path.');
}

            
getScriptUrl() 公共方法

返回入口脚本的相对 URL。

此方法的实现参考了 Zend Framework 中的 Zend_Controller_Request_Http。

public string getScriptUrl ( )
返回值 string

入口脚本的相对 URL。

抛出异常 yii\base\InvalidConfigException

如果无法确定入口脚本 URL

                public function getScriptUrl()
{
    if ($this->_scriptUrl === null) {
        $scriptFile = $this->getScriptFile();
        $scriptName = basename($scriptFile);
        if (isset($_SERVER['SCRIPT_NAME']) && basename($_SERVER['SCRIPT_NAME']) === $scriptName) {
            $this->_scriptUrl = $_SERVER['SCRIPT_NAME'];
        } elseif (isset($_SERVER['PHP_SELF']) && basename($_SERVER['PHP_SELF']) === $scriptName) {
            $this->_scriptUrl = $_SERVER['PHP_SELF'];
        } elseif (isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME']) === $scriptName) {
            $this->_scriptUrl = $_SERVER['ORIG_SCRIPT_NAME'];
        } elseif (isset($_SERVER['PHP_SELF']) && ($pos = strpos($_SERVER['PHP_SELF'], '/' . $scriptName)) !== false) {
            $this->_scriptUrl = substr($_SERVER['SCRIPT_NAME'], 0, $pos) . '/' . $scriptName;
        } elseif (!empty($_SERVER['DOCUMENT_ROOT']) && strpos($scriptFile, $_SERVER['DOCUMENT_ROOT']) === 0) {
            $this->_scriptUrl = str_replace([$_SERVER['DOCUMENT_ROOT'], '\\'], ['', '/'], $scriptFile);
        } else {
            throw new InvalidConfigException('Unable to determine the entry script URL.');
        }
    }
    return $this->_scriptUrl;
}

            
getSecureForwardedHeaderParts() 受保护方法 (自版本 2.0.31 起可用)

返回解码的转发标头

protected array getSecureForwardedHeaderParts ( )

                protected function getSecureForwardedHeaderParts()
{
    if ($this->_secureForwardedHeaderParts !== null) {
        return $this->_secureForwardedHeaderParts;
    }
    if (count(preg_grep('/^forwarded$/i', $this->secureHeaders)) === 0) {
        return $this->_secureForwardedHeaderParts = [];
    }
    /*
     * First header is always correct, because proxy CAN add headers
     * after last one is found.
     * Keep in mind that it is NOT enforced, therefore we cannot be
     * sure, that this is really a first one.
     *
     * FPM keeps last header sent which is a bug. You need to merge
     * headers together on your web server before letting FPM handle it
     * @see https://bugs.php.net/bug.php?id=78844
     */
    $forwarded = $this->headers->get('Forwarded', '');
    if ($forwarded === '') {
        return $this->_secureForwardedHeaderParts = [];
    }
    preg_match_all('/(?:[^",]++|"[^"]++")+/', $forwarded, $forwardedElements);
    foreach ($forwardedElements[0] as $forwardedPairs) {
        preg_match_all('/(?P<key>\w+)\s*=\s*(?:(?P<value>[^",;]*[^",;\s])|"(?P<value2>[^"]+)")/', $forwardedPairs, $matches, PREG_SET_ORDER);
        $this->_secureForwardedHeaderParts[] = array_reduce($matches, function ($carry, $item) {
            $value = $item['value'];
            if (isset($item['value2']) && $item['value2'] !== '') {
                $value = $item['value2'];
            }
            $carry[strtolower($item['key'])] = $value;
            return $carry;
        }, []);
    }
    return $this->_secureForwardedHeaderParts;
}

            
getSecureForwardedHeaderTrustedPart() 受保护方法 (自版本 2.0.31 起可用)

获取令牌的第一个 Forwarded 标头值

protected string|null getSecureForwardedHeaderTrustedPart ( $token )
$token string

标头令牌

                protected function getSecureForwardedHeaderTrustedPart($token)
{
    $token = strtolower($token);
    if ($parts = $this->getSecureForwardedHeaderTrustedParts()) {
        $lastElement = array_pop($parts);
        if ($lastElement && isset($lastElement[$token])) {
            return $lastElement[$token];
        }
    }
    return null;
}

            
getSecureForwardedHeaderTrustedParts() 受保护方法 (自版本 2.0.31 起可用)

仅获取受信任的 Forwarded 标头部分

protected array getSecureForwardedHeaderTrustedParts ( )

                protected function getSecureForwardedHeaderTrustedParts()
{
    if ($this->_secureForwardedHeaderTrustedParts !== null) {
        return $this->_secureForwardedHeaderTrustedParts;
    }
    $validator = $this->getIpValidator();
    $trustedHosts = [];
    foreach ($this->trustedHosts as $trustedCidr => $trustedCidrOrHeaders) {
        if (!is_array($trustedCidrOrHeaders)) {
            $trustedCidr = $trustedCidrOrHeaders;
        }
        $trustedHosts[] = $trustedCidr;
    }
    $validator->setRanges($trustedHosts);
    $this->_secureForwardedHeaderTrustedParts = array_filter(
        $this->getSecureForwardedHeaderParts(),
        function ($headerPart) use ($validator) {
            return isset($headerPart['for']) ? !$validator->validate($headerPart['for']) : true;
        }
    );
    return $this->_secureForwardedHeaderTrustedParts;
}

            
getSecurePort() 公共方法

返回用于安全请求的端口。

默认为 443,或者如果当前请求是安全的,则由服务器指定的端口。

另请参阅 setSecurePort()

public integer getSecurePort ( )
返回值 integer

安全请求的端口号。

                public function getSecurePort()
{
    if ($this->_securePort === null) {
        $serverPort = $this->getServerPort();
        $this->_securePort = $this->getIsSecureConnection() && $serverPort !== null ? $serverPort : 443;
    }
    return $this->_securePort;
}

            
getServerName() 公共方法

返回服务器名称。

public string|null getServerName ( )
返回值 string|null

服务器名称,如果不可用则为 null

                public function getServerName()
{
    return isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : null;
}

            
getServerPort() 公共方法

返回服务器端口号。如果通过转发标头(例如“X-Forwarded-Port”)指定了端口,并且远程主机是“受信任的主机”,则将使用该端口(请参阅 $portHeaders),否则将返回默认服务器端口。

另请参阅 $portHeaders

public integer|null getServerPort ( )
返回值 integer|null

服务器端口号,如果不可用则为 null

                public function getServerPort()
{
    foreach ($this->portHeaders as $portHeader) {
        if ($this->headers->has($portHeader)) {
            $port = $this->headers->get($portHeader);
            if ($port !== null) {
                return $port;
            }
        }
    }
    return isset($_SERVER['SERVER_PORT']) ? (int) $_SERVER['SERVER_PORT'] : null;
}

            
getTrustedHeaders() 受保护方法 (自版本 2.0.28 起可用)

根据 $trustedHosts 获取受信任的标头。

protected array getTrustedHeaders ( )

                protected function getTrustedHeaders()
{
    // do not trust any of the [[secureHeaders]] by default
    $trustedHeaders = [];
    // check if the client is a trusted host
    if (!empty($this->trustedHosts)) {
        $validator = $this->getIpValidator();
        $ip = $this->getRemoteIP();
        foreach ($this->trustedHosts as $cidr => $headers) {
            if (!is_array($headers)) {
                $cidr = $headers;
                $headers = $this->secureHeaders;
            }
            $validator->setRanges($cidr);
            if ($validator->validate($ip)) {
                $trustedHeaders = $headers;
                break;
            }
        }
    }
    return $trustedHeaders;
}

            
getUrl() 公共方法

返回当前请求的相对 URL。

这指的是 URL 中 $hostInfo 部分之后的部分。它包含 $queryString 部分(如果有)。

public string getUrl ( )
返回值 string

当前请求的相对 URL。请注意,返回的 URI 可能会根据客户端进行 URL 编码。

抛出异常 yii\base\InvalidConfigException

如果由于服务器配置异常而无法确定 URL

                public function getUrl()
{
    if ($this->_url === null) {
        $this->_url = $this->resolveRequestUri();
    }
    return $this->_url;
}

            
getUserAgent() 公共方法

返回用户代理。

public string|null getUserAgent ( )
返回值 string|null

用户代理,如果不可用则为 null

                public function getUserAgent()
{
    return $this->headers->get('User-Agent');
}

            
getUserHost() 公共方法

返回用户主机名称。

HOST 使用标头和/或 $_SERVER 变量确定。

public string|null getUserHost ( )
返回值 string|null

用户主机名,如果不可用则为 null

                public function getUserHost()
{
    $userIp = $this->getUserIpFromIpHeaders();
    if ($userIp === null) {
        return $this->getRemoteHost();
    }
    return gethostbyaddr($userIp);
}

            
getUserIP() 公共方法

返回用户 IP 地址。

IP 使用标头和/或 $_SERVER 变量确定。

public string|null getUserIP ( )
返回值 string|null

用户 IP 地址,如果不可用则为 null

                public function getUserIP()
{
    if ($this->_ip === null) {
        $this->_ip = $this->getUserIpFromIpHeaders();
        if ($this->_ip === null) {
            $this->_ip = $this->getRemoteIP();
        }
    }
    return $this->_ip;
}

            
getUserIpFromIpHeader() 受保护方法 (自版本 2.0.28 起可用)

从 IP 标头返回用户 IP。

另请参阅

protected string|null getUserIpFromIpHeader ( $ips )
$ips string

逗号分隔的 IP 列表

返回值 string|null

IP 作为字符串。如果无法从标头确定 IP,则返回 Null。

                protected function getUserIpFromIpHeader($ips)
{
    $ips = trim($ips);
    if ($ips === '') {
        return null;
    }
    $ips = preg_split('/\s*,\s*/', $ips, -1, PREG_SPLIT_NO_EMPTY);
    krsort($ips);
    $validator = $this->getIpValidator();
    $resultIp = null;
    foreach ($ips as $ip) {
        $validator->setRanges('any');
        if (!$validator->validate($ip) /* checking IP format */) {
            break;
        }
        $resultIp = $ip;
        $isTrusted = false;
        foreach ($this->trustedHosts as $trustedCidr => $trustedCidrOrHeaders) {
            if (!is_array($trustedCidrOrHeaders)) {
                $trustedCidr = $trustedCidrOrHeaders;
            }
            $validator->setRanges($trustedCidr);
            if ($validator->validate($ip) /* checking trusted range */) {
                $isTrusted = true;
                break;
            }
        }
        if (!$isTrusted) {
            break;
        }
    }
    return $resultIp;
}

            
getUserIpFromIpHeaders() 受保护方法 (自版本 2.0.28 起可用)

$ipHeaders 返回用户 IP 地址。

另请参阅 $ipHeaders

受保护 字符串| getUserIpFromIpHeaders ( )
返回值 string|null

用户 IP 地址,如果不可用则为 null

                protected function getUserIpFromIpHeaders()
{
    $ip = $this->getSecureForwardedHeaderTrustedPart('for');
    if (
        $ip !== null && preg_match(
            '/^\[?(?P<ip>(?:(?:(?:[0-9a-f]{1,4}:){1,6}(?:[0-9a-f]{1,4})?(?:(?::[0-9a-f]{1,4}){1,6}))|(?:\d{1,3}\.){3}\d{1,3}))\]?(?::(?P<port>\d+))?$/',
            $ip,
            $matches
        )
    ) {
        $ip = $this->getUserIpFromIpHeader($matches['ip']);
        if ($ip !== null) {
            return $ip;
        }
    }
    foreach ($this->ipHeaders as $ipHeader) {
        if ($this->headers->has($ipHeader)) {
            $ip = $this->getUserIpFromIpHeader($this->headers->get($ipHeader));
            if ($ip !== null) {
                return $ip;
            }
        }
    }
    return null;
}

            
hasEventHandlers() 公共方法

定义于: yii\base\Component::hasEventHandlers()

返回一个值,指示是否有任何处理程序附加到命名的事件。

公共 布尔值 hasEventHandlers ( $name )
$name string

事件名称

返回值 boolean

是否存在任何附加到事件的处理程序。

                public function hasEventHandlers($name)
{
    $this->ensureBehaviors();
    if (!empty($this->_events[$name])) {
        return true;
    }
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
            return true;
        }
    }
    return Event::hasHandlers($this, $name);
}

            
hasMethod() 公共方法

定义于: yii\base\Component::hasMethod()

返回一个值,指示是否定义了方法。

如果定义了方法

  • 该类具有指定名称的方法
  • 附加的行为具有给定名称的方法(当 $checkBehaviors 为 true 时)。
公共 布尔值 hasMethod ( $name, $checkBehaviors true )
$name string

属性名称

$checkBehaviors boolean

是否将行为的方法视为此组件的方法

返回值 boolean

该方法是否已定义

                public function hasMethod($name, $checkBehaviors = true)
{
    if (method_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->hasMethod($name)) {
                return true;
            }
        }
    }
    return false;
}

            
hasProperty() 公共方法

定义于: yii\base\Component::hasProperty()

返回一个值,指示是否为此组件定义了属性。

如果定义了属性

  • 该类具有与指定名称关联的 getter 或 setter 方法(在这种情况下,属性名称不区分大小写);
  • 该类具有与指定名称相同的成员变量(当 $checkVars 为 true 时);
  • 附加的行为具有给定名称的属性(当 $checkBehaviors 为 true 时)。

另请参阅

公共 布尔值 hasProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

属性名称

$checkVars boolean

是否将成员变量视为属性

$checkBehaviors boolean

是否将行为的属性视为此组件的属性

返回值 boolean

属性是否已定义

                public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
{
    return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
}

            
init() 公共方法

定义于: yii\base\BaseObject::init()

初始化对象。

此方法在构造函数结束时调用,在对象使用给定配置初始化后。

公共 void init ( )

                public function init()
{
}

            
loadCookies() 受保护方法

$_COOKIE 转换为 yii\web\Cookie 数组。

受保护 数组 loadCookies ( )
返回值 array

从请求中获取的 Cookie

抛出异常 yii\base\InvalidConfigException

如果 $cookieValidationKey 未设置且 $enableCookieValidation 为 true

                protected function loadCookies()
{
    $cookies = [];
    if ($this->enableCookieValidation) {
        if ($this->cookieValidationKey == '') {
            throw new InvalidConfigException(get_class($this) . '::cookieValidationKey must be configured with a secret key.');
        }
        foreach ($_COOKIE as $name => $value) {
            if (!is_string($value)) {
                continue;
            }
            $data = Yii::$app->getSecurity()->validateData($value, $this->cookieValidationKey);
            if ($data === false) {
                continue;
            }
            if (defined('PHP_VERSION_ID') && PHP_VERSION_ID >= 70000) {
                $data = @unserialize($data, ['allowed_classes' => false]);
            } else {
                $data = @unserialize($data);
            }
            if (is_array($data) && isset($data[0], $data[1]) && $data[0] === $name) {
                $cookies[$name] = Yii::createObject([
                    'class' => 'yii\web\Cookie',
                    'name' => $name,
                    'value' => $data[1],
                    'expire' => null,
                ]);
            }
        }
    } else {
        foreach ($_COOKIE as $name => $value) {
            $cookies[$name] = Yii::createObject([
                'class' => 'yii\web\Cookie',
                'name' => $name,
                'value' => $value,
                'expire' => null,
            ]);
        }
    }
    return $cookies;
}

            
loadCsrfToken() 受保护方法

从 Cookie 或会话中加载 CSRF 令牌。

受保护 字符串| loadCsrfToken ( )
返回值 string|null

从 Cookie 或会话中加载的 CSRF 令牌。如果 Cookie 或会话中没有 CSRF 令牌,则返回 Null。

                protected function loadCsrfToken()
{
    if ($this->enableCsrfCookie) {
        return $this->getCookies()->getValue($this->csrfParam);
    }
    return Yii::$app->getSession()->get($this->csrfParam);
}

            
off() 公共方法

定义于: yii\base\Component::off()

从此组件中分离现有的事件处理程序。

此方法与 on() 相反。

注意:如果为事件名称传递通配符模式,则只会删除使用此通配符注册的处理程序,而使用与此通配符匹配的普通名称注册的处理程序将保留。

另请参阅 on()

公共 布尔值 off ( $name, $handler null )
$name string

事件名称

$handler 可调用|

要删除的事件处理程序。如果为 null,则将删除附加到命名事件的所有处理程序。

返回值 boolean

如果找到并分离了一个处理程序

                public function off($name, $handler = null)
{
    $this->ensureBehaviors();
    if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
        return false;
    }
    if ($handler === null) {
        unset($this->_events[$name], $this->_eventWildcards[$name]);
        return true;
    }
    $removed = false;
    // plain event names
    if (isset($this->_events[$name])) {
        foreach ($this->_events[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_events[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_events[$name] = array_values($this->_events[$name]);
            return true;
        }
    }
    // wildcard event names
    if (isset($this->_eventWildcards[$name])) {
        foreach ($this->_eventWildcards[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_eventWildcards[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
            // remove empty wildcards to save future redundant regex checks:
            if (empty($this->_eventWildcards[$name])) {
                unset($this->_eventWildcards[$name]);
            }
        }
    }
    return $removed;
}

            
on() 公共方法

定义于: yii\base\Component::on()

将事件处理程序附加到事件。

事件处理程序必须是有效的 PHP 回调。以下是一些示例

function ($event) { ... }         // anonymous function
[$object, 'handleClick']          // $object->handleClick()
['Page', 'handleClick']           // Page::handleClick()
'handleClick'                     // global function handleClick()

事件处理程序必须使用以下签名定义,

function ($event)

其中 $event 是一个 yii\base\Event 对象,其中包含与事件关联的参数。

从 2.0.14 开始,您可以将事件名称指定为通配符模式

$component->on('event.group.*', function ($event) {
    Yii::trace($event->name . ' is triggered.');
});

另请参阅 off()

公共 void on ( $name, $handler, $data null, $append true )
$name string

事件名称

$handler 可调用

事件处理程序

$data mixed

触发事件时传递给事件处理程序的数据。调用事件处理程序时,可以通过 yii\base\Event::$data 访问此数据。

$append boolean

是否将新的事件处理程序追加到现有处理程序列表的末尾。如果为 false,则新的处理程序将插入到现有处理程序列表的开头。

                public function on($name, $handler, $data = null, $append = true)
{
    $this->ensureBehaviors();
    if (strpos($name, '*') !== false) {
        if ($append || empty($this->_eventWildcards[$name])) {
            $this->_eventWildcards[$name][] = [$handler, $data];
        } else {
            array_unshift($this->_eventWildcards[$name], [$handler, $data]);
        }
        return;
    }
    if ($append || empty($this->_events[$name])) {
        $this->_events[$name][] = [$handler, $data];
    } else {
        array_unshift($this->_events[$name], [$handler, $data]);
    }
}

            
parseAcceptHeader() 公共方法

解析给定的 Accept(或 Accept-Language)标头。

此方法将返回可接受的值及其质量分数以及给定 Accept 标头中指定的相应参数。返回值的数组键是可接受的值,而数组值包含相应的质量分数和参数。将首先返回质量分数最高的可接受值。例如,

$header = 'text/plain; q=0.5, application/json; version=1.0, application/xml; version=2.0;';
$accepts = $request->parseAcceptHeader($header);
print_r($accepts);
// displays:
// [
//     'application/json' => ['q' => 1, 'version' => '1.0'],
//      'application/xml' => ['q' => 1, 'version' => '2.0'],
//           'text/plain' => ['q' => 0.5],
// ]
公共 数组 parseAcceptHeader ( $header )
$header string

要解析的标头

返回值 array

按质量分数排序的可接受值。将首先返回分数最高的值。

                public function parseAcceptHeader($header)
{
    $accepts = [];
    foreach (explode(',', $header) as $i => $part) {
        $params = preg_split('/\s*;\s*/', trim($part), -1, PREG_SPLIT_NO_EMPTY);
        if (empty($params)) {
            continue;
        }
        $values = [
            'q' => [$i, array_shift($params), 1],
        ];
        foreach ($params as $param) {
            if (strpos($param, '=') !== false) {
                list($key, $value) = explode('=', $param, 2);
                if ($key === 'q') {
                    $values['q'][2] = (float) $value;
                } else {
                    $values[$key] = $value;
                }
            } else {
                $values[] = $param;
            }
        }
        $accepts[] = $values;
    }
    usort($accepts, function ($a, $b) {
        $a = $a['q']; // index, name, q
        $b = $b['q'];
        if ($a[2] > $b[2]) {
            return -1;
        }
        if ($a[2] < $b[2]) {
            return 1;
        }
        if ($a[1] === $b[1]) {
            return $a[0] > $b[0] ? 1 : -1;
        }
        if ($a[1] === '*/*') {
            return 1;
        }
        if ($b[1] === '*/*') {
            return -1;
        }
        $wa = $a[1][strlen($a[1]) - 1] === '*';
        $wb = $b[1][strlen($b[1]) - 1] === '*';
        if ($wa xor $wb) {
            return $wa ? 1 : -1;
        }
        return $a[0] > $b[0] ? 1 : -1;
    });
    $result = [];
    foreach ($accepts as $accept) {
        $name = $accept['q'][1];
        $accept['q'] = $accept['q'][2];
        $result[$name] = $accept;
    }
    return $result;
}

            
post() 公共方法

返回具有给定名称的 POST 参数。如果未指定名称,则返回所有 POST 参数的数组。

公共 数组|混合 post ( $name null, $defaultValue null )
$name string

参数名称

$defaultValue mixed

如果参数不存在,则为默认参数值。

                public function post($name = null, $defaultValue = null)
{
    if ($name === null) {
        return $this->getBodyParams();
    }
    return $this->getBodyParam($name, $defaultValue);
}

            
resolve() 公共方法

将当前请求解析为路由和关联的参数。

公共 数组 resolve ( )
返回值 array

第一个元素是路由,第二个是关联的参数。

抛出异常 yii\web\NotFoundHttpException

如果无法解析请求。

                public function resolve()
{
    $result = Yii::$app->getUrlManager()->parseRequest($this);
    if ($result !== false) {
        list($route, $params) = $result;
        if ($this->_queryParams === null) {
            $_GET = $params + $_GET; // preserve numeric keys
        } else {
            $this->_queryParams = $params + $this->_queryParams;
        }
        return [$route, $this->getQueryParams()];
    }
    throw new NotFoundHttpException(Yii::t('yii', 'Page not found.'));
}

            
resolvePathInfo() 受保护方法

解析当前请求 URL 的路径信息部分。

路径信息指的是入口脚本之后、问号(查询字符串)之前的部分。起始斜杠都会被移除(结尾斜杠将会保留)。

受保护的 字符串 resolvePathInfo ( )
返回值 string

请求 URL 中入口脚本之后、问号之前的部分。注意,返回的路径信息是解码后的。

抛出异常 yii\base\InvalidConfigException

如果由于意外的服务器配置无法确定路径信息

                protected function resolvePathInfo()
{
    $pathInfo = $this->getUrl();
    if (($pos = strpos($pathInfo, '?')) !== false) {
        $pathInfo = substr($pathInfo, 0, $pos);
    }
    $pathInfo = urldecode($pathInfo);
    // try to encode in UTF8 if not so
    // https://www.w3.org/International/questions/qa-forms-utf-8.en.html
    if (
        !preg_match('%^(?:
        [\x09\x0A\x0D\x20-\x7E]              # ASCII
        | [\xC2-\xDF][\x80-\xBF]             # non-overlong 2-byte
        | \xE0[\xA0-\xBF][\x80-\xBF]         # excluding overlongs
        | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
        | \xED[\x80-\x9F][\x80-\xBF]         # excluding surrogates
        | \xF0[\x90-\xBF][\x80-\xBF]{2}      # planes 1-3
        | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
        | \xF4[\x80-\x8F][\x80-\xBF]{2}      # plane 16
        )*$%xs', $pathInfo)
    ) {
        $pathInfo = $this->utf8Encode($pathInfo);
    }
    $scriptUrl = $this->getScriptUrl();
    $baseUrl = $this->getBaseUrl();
    if (strpos($pathInfo, $scriptUrl) === 0) {
        $pathInfo = substr($pathInfo, strlen($scriptUrl));
    } elseif ($baseUrl === '' || strpos($pathInfo, $baseUrl) === 0) {
        $pathInfo = substr($pathInfo, strlen($baseUrl));
    } elseif (isset($_SERVER['PHP_SELF']) && strpos($_SERVER['PHP_SELF'], $scriptUrl) === 0) {
        $pathInfo = substr($_SERVER['PHP_SELF'], strlen($scriptUrl));
    } else {
        throw new InvalidConfigException('Unable to determine the path info of the current request.');
    }
    if (strncmp($pathInfo, '/', 1) === 0) {
        $pathInfo = substr($pathInfo, 1);
    }
    return (string) $pathInfo;
}

            
resolveRequestUri() 受保护方法

解析当前请求 URL 的请求 URI 部分。

这指的是 $hostInfo 部分之后的部分。它包含 $queryString 部分(如果有)。此方法的实现参考了 Zend Framework 中的 Zend_Controller_Request_Http。

受保护的 字符串|布尔值 resolveRequestUri ( )
返回值 字符串|布尔值

当前请求 URL 的请求 URI 部分。请注意,根据客户端的不同,返回的 URI 可能是 URL 编码的。

抛出异常 yii\base\InvalidConfigException

如果由于服务器配置异常而无法确定请求 URI

                protected function resolveRequestUri()
{
    if ($this->headers->has('X-Rewrite-Url')) { // IIS
        $requestUri = $this->headers->get('X-Rewrite-Url');
    } elseif (isset($_SERVER['REQUEST_URI'])) {
        $requestUri = $_SERVER['REQUEST_URI'];
        if ($requestUri !== '' && $requestUri[0] !== '/') {
            $requestUri = preg_replace('/^(http|https):\/\/[^\/]+/i', '', $requestUri);
        }
    } elseif (isset($_SERVER['ORIG_PATH_INFO'])) { // IIS 5.0 CGI
        $requestUri = $_SERVER['ORIG_PATH_INFO'];
        if (!empty($_SERVER['QUERY_STRING'])) {
            $requestUri .= '?' . $_SERVER['QUERY_STRING'];
        }
    } else {
        throw new InvalidConfigException('Unable to determine the request URI.');
    }
    return $requestUri;
}

            
setAcceptableContentTypes() 公共方法

设置可接受的内容类型。

请参考 getAcceptableContentTypes() 获取参数格式的信息。

另请参阅

公共的 setAcceptableContentTypes ( $value )
$value array

最终用户可接受的内容类型。它们应按优先级排序。

                public function setAcceptableContentTypes($value)
{
    $this->_contentTypes = $value;
}

            
setAcceptableLanguages() 公共方法

公共的 setAcceptableLanguages ( $value )
$value array

最终用户可接受的语言。它们应按优先级排序。

                public function setAcceptableLanguages($value)
{
    $this->_languages = $value;
}

            
setBaseUrl() 公共方法

设置应用程序的相对 URL。

默认情况下,URL 是根据入口脚本 URL 确定的。如果您想更改此行为,可以提供此设置器。

公共的 setBaseUrl ( $value )
$value string

应用程序的相对 URL

                public function setBaseUrl($value)
{
    $this->_baseUrl = $value;
}

            
setBodyParams() 公共方法

设置请求正文参数。

另请参阅 getBodyParams()

公共的 setBodyParams ( $values )
$values array|object

请求正文参数(名称-值对)

                public function setBodyParams($values)
{
    $this->_bodyParams = $values;
}

            
setHostInfo() 公共方法

设置应用程序 URL 的方案和主机部分。

此设置器是在某些 Web 服务器上无法确定模式和主机名时提供的。

另请参阅 getHostInfo() 以获取有关此属性的安全相关说明。

公共的 setHostInfo ( $value )
$value string|null

应用程序 URL 的模式和主机部分。尾随斜杠将被移除。

                public function setHostInfo($value)
{
    $this->_hostName = null;
    $this->_hostInfo = $value === null ? null : rtrim($value, '/');
}

            
setIsConsoleRequest() 公共方法

定义于: yii\base\Request::setIsConsoleRequest()

设置一个值,指示当前请求是否通过命令行发出。

公共的 setIsConsoleRequest ( $value )
$value boolean

指示当前请求是否通过命令行发出的值。

                public function setIsConsoleRequest($value)
{
    $this->_isConsoleRequest = $value;
}

            
setPathInfo() 公共方法

设置当前请求的路径信息。

此方法主要用于测试目的。

公共的 setPathInfo ( $value )
$value string

当前请求的路径信息。

                public function setPathInfo($value)
{
    $this->_pathInfo = $value === null ? null : ltrim($value, '/');
}

            
setPort() 公共方法

设置用于不安全请求的端口。

此设置器是在某些服务器配置需要自定义端口时提供的。

公共的 setPort ( $value )
$value integer

端口号。

                public function setPort($value)
{
    if ($value != $this->_port) {
        $this->_port = (int) $value;
        $this->_hostInfo = null;
    }
}

            
setQueryParams() 公共方法

设置请求 $queryString 参数。

另请参阅

公共的 setQueryParams ( $values )
$values array

请求查询参数(名称-值对)

                public function setQueryParams($values)
{
    $this->_queryParams = $values;
}

            
setRawBody() 公共方法

设置原始 HTTP 请求正文,此方法主要由测试脚本用于模拟原始 HTTP 请求。

公共的 setRawBody ( $rawBody )
$rawBody string

请求体

                public function setRawBody($rawBody)
{
    $this->_rawBody = $rawBody;
}

            
setScriptFile() 公共方法

设置入口脚本文件路径。

入口脚本文件路径通常可以从 $_SERVER['SCRIPT_FILENAME'] 获取。如果您的服务器配置没有返回正确的值,您可以配置此属性使其正确。

公共的 setScriptFile ( $value )
$value string

入口脚本文件路径。

                public function setScriptFile($value)
{
    $this->_scriptFile = $value;
}

            
setScriptUrl() 公共方法

设置应用程序入口脚本的相对 URL。

此设置器是在某些 Web 服务器上无法确定入口脚本 URL 时提供的。

公共的 setScriptUrl ( $value )
$value string

应用程序入口脚本的相对 URL。

                public function setScriptUrl($value)
{
    $this->_scriptUrl = $value === null ? null : '/' . trim($value, '/');
}

            
setSecurePort() 公共方法

设置用于安全请求的端口。

此设置器是在某些服务器配置需要自定义端口时提供的。

public void setSecurePort ( $value )
$value integer

端口号。

                public function setSecurePort($value)
{
    if ($value != $this->_securePort) {
        $this->_securePort = (int) $value;
        $this->_hostInfo = null;
    }
}

            
setUrl() 公共方法

设置当前请求的相对 URL。

URI 必须引用 $hostInfo 之后的部分。请注意,URI 应该进行 URL 编码。

public void setUrl ( $value )
$value string

要设置的请求 URI

                public function setUrl($value)
{
    $this->_url = $value;
}

            
trigger() 公共方法

定义于: yii\base\Component::trigger()

触发事件。

此方法表示事件的发生。它调用事件的所有附加处理程序,包括类级处理程序。

public void trigger ( $name, yii\base\Event $event null )
$name string

事件名称

$event yii\base\Event|null

事件实例。如果未设置,将创建一个默认的 yii\base\Event 对象。

                public function trigger($name, Event $event = null)
{
    $this->ensureBehaviors();
    $eventHandlers = [];
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (StringHelper::matchWildcard($wildcard, $name)) {
            $eventHandlers[] = $handlers;
        }
    }
    if (!empty($this->_events[$name])) {
        $eventHandlers[] = $this->_events[$name];
    }
    if (!empty($eventHandlers)) {
        $eventHandlers = call_user_func_array('array_merge', $eventHandlers);
        if ($event === null) {
            $event = new Event();
        }
        if ($event->sender === null) {
            $event->sender = $this;
        }
        $event->handled = false;
        $event->name = $name;
        foreach ($eventHandlers as $handler) {
            $event->data = $handler[1];
            call_user_func($handler[0], $event);
            // stop further handling if the event is handled
            if ($event->handled) {
                return;
            }
        }
    }
    // invoke class-level attached handlers
    Event::trigger($this, $name, $event);
}

            
validateCsrfToken() 公共方法

执行 CSRF 验证。

此方法将通过将其与存储在 cookie 或会话中的令牌进行比较来验证用户提供的 CSRF 令牌。此方法主要在 yii\web\Controller::beforeAction() 中调用。

请注意,如果 $enableCsrfValidation 为 false 或 HTTP 方法属于 GET、HEAD 或 OPTIONS,则此方法将**不**执行 CSRF 验证。

public boolean validateCsrfToken ( $clientSuppliedToken null )
$clientSuppliedToken string|null

要验证的用户提供的 CSRF 令牌。如果为 null,则将从 $csrfParam POST 字段或 HTTP 标头中检索令牌。此参数自版本 2.0.4 起可用。

返回值 boolean

CSRF 令牌是否有效。如果 $enableCsrfValidation 为 false,则此方法将返回 true。

                public function validateCsrfToken($clientSuppliedToken = null)
{
    $method = $this->getMethod();
    // only validate CSRF token on non-"safe" methods https://tools.ietf.org/html/rfc2616#section-9.1.1
    if (!$this->enableCsrfValidation || in_array($method, ['GET', 'HEAD', 'OPTIONS'], true)) {
        return true;
    }
    $trueToken = $this->getCsrfToken();
    if ($clientSuppliedToken !== null) {
        return $this->validateCsrfTokenInternal($clientSuppliedToken, $trueToken);
    }
    return $this->validateCsrfTokenInternal($this->getBodyParam($this->csrfParam), $trueToken)
        || $this->validateCsrfTokenInternal($this->getCsrfTokenFromHeader(), $trueToken);
}