类 ServerRequest
一个帮助封装请求信息和单个请求细节的类。提供常用方法来检查请求头和请求体。
属性摘要
-
$_detectorCache protected
array<string, bool>
is(something) 调用结果的实例缓存
-
$_detectors protected static
arrayClosure|array>
使用
is()
的内置检测器可以使用addDetector()
修改。 -
$_environment protected
array<string, mixed>
环境数据的数组。
-
$attributes protected
array<string, mixed>
存储附加到请求的额外属性。
-
$base protected
string
基本 URL 路径。
-
$cookies protected
array<string, mixed>
Cookie 数据的数组。
-
$data protected
object|array|null
POST 数据的数组。将包含表单数据以及上传的文件。在 PUT/PATCH/DELETE 请求中,此属性将包含 form-urlencoded 数据。
-
$emulatedAttributes protected
list<string>
由 PSR7 属性方法模拟的属性列表。
-
$flash protected
Cake\Http\FlashMessage
与该请求相关的 FlashMessage 对象的实例
-
$params protected
array
从 URL 解析的参数数组。
-
$protocol protected
string|null
使用的 HTTP 协议版本。
-
$query protected
array
查询字符串参数的数组
-
$requestTarget protected
string|null
如果被覆盖,则为请求目标
-
$session protected
Cake\Http\Session
与该请求相关的 Session 对象的实例
-
$stream protected
Psr\Http\Message\StreamInterface
请求体流。包含 php://input,除非使用
input
构造函数选项。 -
$trustProxy public
bool
是否信任大多数负载均衡器设置的 HTTP_X 头。仅当您的应用程序在您控制的负载均衡器/代理后面运行时,才设置为 true。
-
$trustedProxies protected
list<string>
受信任代理列表
-
$uploadedFiles protected
array
Psr\Http\Message\UploadedFileInterface 对象的数组。
-
$uri protected
Psr\Http\Message\UriInterface
Uri 实例
-
$webroot protected
string
请求的 webroot 路径段。
方法摘要
-
__call() public
缺少方法处理程序,处理包装旧样式的 isAjax() 类型方法
-
__construct() public
创建一个新的请求对象。
-
_acceptHeaderDetector() protected
检测是否存在特定接受头。
-
_environmentDetector() protected
检测是否存在特定的环境变量。
-
_headerDetector() protected
检测是否存在特定头。
-
_is() protected
公共 is() 函数的工作器
-
_paramDetector() protected
检测是否存在特定的请求参数。
-
_setConfig() protected
将 config/settings 数据处理到属性中。
-
acceptLanguage() public
获取客户端接受的语言,或检查是否接受特定语言。
-
accepts() public
找出客户端接受的哪种内容类型,或检查它们是否接受特定类型的内容。
-
addDetector() public static
在请求可以使用检测器列表中添加新的检测器。可以设置多种类型的检测器。
-
allowMethod() public
仅允许某些 HTTP 请求方法,如果请求方法不匹配,将显示 405 错误,并将设置所需的 "Allow" 响应头。
-
clearDetectorCache() public
清除实例检测器缓存,由 is() 函数使用
-
clientIp() public
获取客户端使用的 IP,或声称使用的 IP。
-
contentType() public
获取此请求中使用的内容类型。
-
domain() public
获取域名,并包含 $tldLength 个 tld 段。
-
getAttribute() public
从请求中读取属性,或获取默认值
-
getAttributes() public
获取请求中的所有属性。
-
getBody() public
获取消息的正文。
-
getCookie() public
从请求的 cookie 数据中读取 cookie 数据。
-
getCookieCollection() public
根据请求的 cookie 获取 cookie 集合
-
getCookieParams() public
获取请求中的所有 cookie 数据。
-
getData() public
提供对请求数据的安全访问器。允许使用 Hash::get() 兼容的路径。
-
getEnv() public
从请求的环境数据中获取值。如果 $environment 属性中没有设置键,则回退使用 env()。
-
getFlash() public
返回此请求的 FlashMessage 对象的实例
-
getHeader() public
从请求中获取单个头。
-
getHeaderLine() public
从请求中以字符串形式获取单个头。
-
getHeaders() public
获取请求中的所有头。
-
getMethod() public
获取此请求使用的 HTTP 方法。有几种方法可以指定方法。
-
getParam() public
安全访问 $this->params 中的值。
-
getParsedBody() public
获取解析的请求正文数据。
-
getPath() public
获取当前请求的路径。
-
getProtocolVersion() public
检索 HTTP 协议版本,作为字符串。
-
getQuery() public
读取特定查询值或点路径。
-
getQueryParams() public
根据 PSR-7 规范获取所有查询参数。要读取特定的查询值,请使用替代的 getQuery() 方法。
-
getRequestTarget() public
检索请求的目标。
-
getServerParams() public
获取所有服务器环境参数。
-
getSession() public
返回此请求的 Session 对象的实例
-
getTrustedProxies() public
获取受信任代理
-
getUploadedFile() public
从点路径获取上传的文件。
-
getUploadedFiles() public
从请求中获取上传文件数组。
-
getUri() public
检索 URI 实例。
-
hasHeader() public
检查请求中是否设置了标头。
-
host() public
获取处理请求的宿主。
-
is() public
检查请求是否为特定类型。
-
isAll() public
检查请求是否匹配所有给定类型。
-
normalizeHeaderName() protected
将标头名称规范化为 SERVER 版本。
-
port() public
获取处理请求的端口。
-
processUrlOption() protected
根据
url
选项设置环境变量以方便 UriInterface 实例生成。 -
referer() public
返回引用此请求的来源。
-
scheme() public
获取用于请求的当前 URL 方案。
-
setTrustedProxies() public
注册受信任代理。
-
subdomains() public
获取主机的子域。
-
validateUploadedFiles() protected
递归验证上传的文件数据。
-
withAddedHeader() public
获取修改后的请求,其中包含提供的标头。
-
withAttribute() public
返回具有指定请求属性的实例。
-
withBody() public
返回具有指定消息正文的实例。
-
withCookieCollection() public
将请求中的 Cookie 替换为提供的 CookieCollection 中的 Cookie。
-
withCookieParams() public
替换 Cookie 并获取新的请求实例。
-
withData() public
使用新的请求数据元素更新请求。
-
withEnv() public
使用新的环境数据元素更新请求。
-
withHeader() public
获取修改后的请求,其中包含提供的标头。
-
withMethod() public
更新请求方法并获取新的实例。
-
withParam() public
使用新的路由参数更新请求。
-
withParsedBody() public
更新解析后的正文并获取新的实例。
-
withProtocolVersion() public
返回具有指定 HTTP 协议版本的实例。
-
withQueryParams() public
更新查询字符串数据并获取新的实例。
-
withRequestTarget() public
使用特定请求目标创建新实例。
-
withUploadedFiles() public
更新请求,替换文件并创建新实例。
-
withUri() public
返回具有指定 URI 的实例。
-
withoutAttribute() public
返回没有指定请求属性的实例。
-
withoutData() public
更新请求以删除数据元素。
-
withoutHeader() public
获取修改后的请求,不包含提供的标头。
方法详情
__call() ¶ public
__call(string $name, array $params): bool
缺少方法处理程序,处理包装旧样式的 isAjax() 类型方法
参数
-
string
$name 调用的方法
-
array
$params 方法调用的参数数组
返回值
bool
抛出
BadMethodCallException
当调用无效方法时。
__construct() ¶ public
__construct(array<string, mixed> $config = [])
创建一个新的请求对象。
您可以将数据提供为数组或字符串。如果您使用字符串,您只能提供请求的 URL。使用数组可以提供以下键
post
POST 数据或非查询字符串数据query
查询字符串中的附加数据。files
以规范化结构上传的文件,每个叶子都是 UploadedFileInterface 的实例。cookies
此请求的 Cookie。environment
$_SERVER 和 $_ENV 数据。url
请求的 URL,不包括基本路径。uri
PSR7 UriInterface 对象。如果为 null,则将从url
或environment
创建一个。base
请求的基本 URL。webroot
请求的 webroot 目录。input
来自 php://input 的数据,这对模拟带有 put、patch 或 delete 数据的请求很有用。session
Session 对象的实例
参数
-
array<string, mixed>
$config optional 用于创建请求的请求数据数组。
_acceptHeaderDetector() ¶ protected
_acceptHeaderDetector(array $detect): bool
检测是否存在特定接受头。
参数
-
array
$detect 检测器选项数组。
返回值
bool
_environmentDetector() ¶ protected
_environmentDetector(array $detect): bool
检测是否存在特定的环境变量。
参数
-
array
$detect 检测器选项数组。
返回值
bool
_headerDetector() ¶ protected
_headerDetector(array $detect): bool
检测是否存在特定头。
参数
-
array
$detect 检测器选项数组。
返回值
bool
_is() ¶ protected
_is(string $type, array $args): bool
公共 is() 函数的工作器
参数
-
string
$type 要检查的请求类型。
-
array
$args 自定义检测器参数数组。
返回值
bool
_paramDetector() ¶ protected
_paramDetector(array $detect): bool
检测是否存在特定的请求参数。
参数
-
array
$detect 检测器选项数组。
返回值
bool
_setConfig() ¶ protected
_setConfig(array<string, mixed> $config): void
将 config/settings 数据处理到属性中。
参数
-
array<string, mixed>
$config 要使用的配置数据。
返回值
void
acceptLanguage() ¶ public
acceptLanguage(string|null $language = null): array|bool
获取客户端接受的语言,或检查是否接受特定语言。
获取接受的语言列表
$request->acceptLanguage();
检查是否接受特定语言
$request->acceptLanguage('es-es');
参数
-
string|null
$language optional 要测试的语言。
返回值
array|bool
accepts() ¶ public
accepts(string|null $type = null): list<string>|bool
找出客户端接受的哪种内容类型,或检查它们是否接受特定类型的内容。
获取所有类型
$this->request->accepts();
检查单个类型
$this->request->accepts('application/json');
此方法将根据客户端指示的偏好值对返回的媒体类型进行排序。
参数
-
string|null
$type optional 要检查的媒体类型。留空以获取客户端接受的所有类型。
返回值
list<string>|bool
addDetector() ¶ public static
addDetector(string $name, Closure|array $detector): void
在请求可以使用检测器列表中添加新的检测器。可以设置多种类型的检测器。
回调比较
回调检测器允许您提供一个闭包来处理检查。闭包将以请求对象作为其唯一参数。
addDetector('custom', function ($request) { //Return a boolean });
环境值比较
环境值比较,将从 env()
获取的值与已知值进行比较,环境值将与提供的值进行相等性检查。
addDetector('post', ['env' => 'REQUEST_METHOD', 'value' => 'POST']);
请求参数比较
允许对请求参数进行自定义检测。
addDetector('admin', ['param' => 'prefix', 'value' => 'admin']);
Accept 比较
允许检测器与 Accept 标头值进行比较。
addDetector('csv', ['accept' => 'text/csv']);
标头比较
允许比较一个或多个标头。
addDetector('fancy', ['header' => ['X-Fancy' => 1]);
param
、env
和比较类型允许以下值比较选项
模式值比较
模式值比较允许您将从 env()
获取的值与正则表达式进行比较。
addDetector('iphone', ['env' => 'HTTP_USER_AGENT', 'pattern' => '/iPhone/i']);
基于选项的比较
基于选项的比较使用选项列表来创建正则表达式。对已定义的选项检测器进行后续添加调用将合并选项。
addDetector('mobile', ['env' => 'HTTP_USER_AGENT', 'options' => ['Fennec']]);
您还可以使用 options
键与多个值进行比较。当您要检查请求值是否在一个选项列表中时,这很有用。
addDetector('extension', ['param' => '_ext', 'options' => ['pdf', 'csv']]
参数
-
string
$name 检测器的名称。
-
Closure|array
$detector 闭包或检测器定义的选项数组。
返回值
void
allowMethod() ¶ public
allowMethod(list<string>|string $methods): true
仅允许某些 HTTP 请求方法,如果请求方法不匹配,将显示 405 错误,并将设置所需的 "Allow" 响应头。
示例
$this->request->allowMethod('post'); 或者 $this->request->allowMethod(['post', 'delete']);
如果请求为 GET,则会设置响应头 "Allow: POST, DELETE" 并返回 405 错误。
参数
-
list<string>|string
$methods 允许的 HTTP 请求方法。
返回值
true
抛出
Cake\Http\Exception\MethodNotAllowedException
domain() ¶ public
domain(int $tldLength = 1): string
获取域名,并包含 $tldLength 个 tld 段。
参数
-
int
$tldLength 可选 您的顶级域名 (TLD) 包含的段数。例如:
example.com
包含 1 个 TLD。而example.co.uk
包含 2 个。
返回值
string
getAttribute() ¶ public
getAttribute(string $name, mixed $default = null): mixed
从请求中读取属性,或获取默认值
检索单个派生的请求属性,如 getAttributes() 中所述。如果属性以前未设置,则返回提供的默认值。
此方法无需使用 hasAttribute() 方法,因为它允许指定一个默认值,如果属性未找到,则返回该值。
参数
-
string
$name 属性名称。
-
mixed
$default 可选 如果属性未设置,则为默认值。
返回值
mixed
getAttributes() ¶ public
getAttributes(): array<string, mixed>
获取请求中的所有属性。
这将包含 CakePHP 提供的 params、webroot、base 和 here 属性。
返回值
array<string, mixed>
getBody() ¶ public
getBody(): Psr\Http\Message\StreamInterface
获取消息的正文。
返回值
Psr\Http\Message\StreamInterface
getCookie() ¶ public
getCookie(string $key, array|string|null $default = null): array|string|null
从请求的 cookie 数据中读取 cookie 数据。
参数
-
string
$key 您要读取的键或点分隔路径。
-
array|string|null
$default 可选 如果未设置 Cookie,则为默认值。
返回值
array|string|null
getCookieCollection() ¶ public
getCookieCollection(): Cake\Http\Cookie\CookieCollection
根据请求的 cookie 获取 cookie 集合
CookieCollection 允许您使用 \Cake\Http\Cookie\Cookie
对象与请求 Cookie 进行交互,并且可以更轻松地将请求 Cookie 转换为响应 Cookie。
此方法每次调用时都会创建一个新的 CookieCollection。这是一种优化,可以减少分配的对象数量,直到需要更复杂的 CookieCollection。通常,您应该优先使用 getCookie()
和 getCookieParams()
而不是此方法。如果您的 Cookie 包含复杂的 JSON 编码数据,则使用 CookieCollection 是理想的选择。
返回值
Cake\Http\Cookie\CookieCollection
getCookieParams() ¶ public
getCookieParams(): array<string, mixed>
获取请求中的所有 cookie 数据。
检索客户端发送到服务器的 Cookie。
数据必须与 $_COOKIE 超级全局变量的结构兼容。
返回值
array<string, mixed>
getData() ¶ public
getData(string|null $name = null, mixed $default = null): mixed
提供对请求数据的安全访问器。允许使用 Hash::get() 兼容的路径。
读取值。
// get all data
$request->getData();
// Read a specific field.
$request->getData('Post.title');
// With a default value.
$request->getData('Post.not there', 'default value');
读取值时,对于不存在的键/值,您将获得 null
。
鼓励开发人员使用 getParsedBody(),如果他们需要整个数据数组,因为它符合 PSR-7 标准,而此方法则不符合。使用 Hash::get() 您也可以获取单个参数。
PSR-7 替代方法
$value = Hash::get($request->getParsedBody(), 'Post.id');
参数
-
string|null
$name 可选 要读取的值的点分隔名称。或 null 以读取所有数据。
-
mixed
$default 可选 默认数据。
返回值
mixed
getEnv() ¶ public
getEnv(string $key, string|null $default = null): string|null
从请求的环境数据中获取值。如果 $environment 属性中没有设置键,则回退使用 env()。
参数
-
string
$key 您要从中读取的键。
-
string|null
$default 可选 尝试检索不存在的环境变量的值时的默认值。
返回值
string|null
getFlash() ¶ public
getFlash(): Cake\Http\FlashMessage
返回此请求的 FlashMessage 对象的实例
返回值
Cake\Http\FlashMessage
getHeader() ¶ public
getHeader(string $name): array<string, string>
从请求中获取单个头。
将头值作为数组返回。如果头不存在,则返回空数组。
参数
-
string
$name 您要获取的头(不区分大小写)。
返回值
array<string, string>
链接
getHeaderLine() ¶ public
getHeaderLine(string $name): string
从请求中以字符串形式获取单个头。
此方法将给定不区分大小写的头名称的所有头值作为用逗号连接在一起的字符串返回。
注意:并非所有头值都适合使用逗号连接来表示。对于此类头,请改用 getHeader() 并提供您自己的分隔符以进行连接。
如果头未出现在消息中,此方法必须返回空字符串。
参数
-
string
$name 您要获取的头(不区分大小写)。
返回值
string
链接
getHeaders() ¶ public
getHeaders(): array<list<string>>
获取请求中的所有头。
返回一个关联数组,其中头名称为键,值为头值的列表。
虽然头名称不区分大小写,但 getHeaders() 将规范化头。
返回值
array<list<string>>
链接
getMethod() ¶ public
getMethod(): string
获取此请求使用的 HTTP 方法。有几种方法可以指定方法。
- 如果您的客户端支持,您可以使用本机 HTTP 方法。
- 您可以设置 X-Http-Method-Override 头。
- 您可以提交一个名为
_method
的输入。
这三种方法中的任何一种都可以用来设置 CakePHP 在内部使用的 HTTP 方法,并将影响此方法的结果。
返回值
string
链接
getParam() ¶ public
getParam(string $name, mixed $default = null): mixed
安全访问 $this->params 中的值。
参数
-
string
$name 参数的名称或点分隔路径。
-
mixed
$default 可选 如果
$name
未设置,则为默认值。默认值为null
。
返回值
mixed
getParsedBody() ¶ public
getParsedBody(): object|array|null
获取解析的请求正文数据。
如果请求 Content-Type 为 application/x-www-form-urlencoded 或 multipart/form-data,并且请求方法为 POST,则这将是发布数据。对于其他内容类型,它可能是反序列化的请求正文。
返回值
object|array|null
getProtocolVersion() ¶ public
getProtocolVersion(): string
检索 HTTP 协议版本,作为字符串。
该字符串必须仅包含 HTTP 版本号(例如,“1.1”、“1.0”)。
返回值
string
getQuery() ¶ public
getQuery(string|null $name = null, mixed $default = null): mixed
读取特定查询值或点路径。
鼓励开发人员使用 getQueryParams(),如果他们需要整个查询数组,因为它符合 PSR-7 标准,而此方法则不符合。使用 Hash::get() 您也可以获取单个参数。
PSR-7 替代方法
$value = Hash::get($request->getQueryParams(), 'Post.id');
参数
-
string|null
$name 可选 查询参数的名称或点分隔路径,或 null 以读取所有内容。
-
mixed
$default 可选 如果未设置命名参数,并且 $name 不为 null,则为默认值。
返回值
mixed
另请参阅
getQueryParams() ¶ public
getQueryParams(): array
根据 PSR-7 规范获取所有查询参数。要读取特定的查询值,请使用替代的 getQuery() 方法。
检索反序列化的查询字符串参数(如果有)。
注意:查询参数可能与 URI 或服务器参数不同步。如果您需要确保仅获取原始值,则可能需要从getUri()->getQuery()
或QUERY_STRING
服务器参数解析查询字符串。
返回值
array
链接
getRequestTarget() ¶ public
getRequestTarget(): string
检索请求的目标。
检索消息的请求目标,无论是按请求方式还是按withRequestTarget()
设置的方式。默认情况下,这将返回应用程序相对路径(不含基本目录)以及 SERVER 环境中定义的查询字符串。
返回值
string
getServerParams() ¶ public
getServerParams(): array
获取所有服务器环境参数。
读取用于创建此请求的所有“环境”或“服务器”数据。
返回值
array
链接
getUploadedFile() ¶ public
getUploadedFile(string $path): Psr\Http\Message\UploadedFileInterface|null
从点路径获取上传的文件。
参数
-
string
$path 您要的文件的点分隔路径。
返回值
Psr\Http\Message\UploadedFileInterface|null
getUploadedFiles() ¶ public
getUploadedFiles(): array
从请求中获取上传文件数组。
此方法以规范化的树形式返回上传元数据,其中每个叶子都是 Psr\Http\Message\UploadedFileInterface 的实例。
这些值可能在实例化期间从 $_FILES 或消息主体准备,或者可能通过 withUploadedFiles() 注入。
返回值
array
getUri() ¶ public
getUri(): Psr\Http\Message\UriInterface
检索 URI 实例。
此方法必须返回 UriInterface 实例。
返回值
Psr\Http\Message\UriInterface
hasHeader() ¶ public
hasHeader(string $name): bool
检查请求中是否设置了标头。
参数
-
string
$name 您要获取的头(不区分大小写)。
返回值
bool
链接
is() ¶ public
is(list<string>|string $type, mixed ...$args): bool
检查请求是否为特定类型。
使用内置检测规则以及使用 {@link \Cake\Http\ServerRequest::addDetector()} 定义的附加规则。任何检测器都可以称为 is($type)
或 is$Type()
。
参数
-
list<string>|string
$type 您要检查的请求类型。如果数组,此方法将返回 true,如果请求与任何类型匹配。
-
mixed
...$args 参数列表
返回值
bool
抛出
InvalidArgumentException
如果未为提供的类型设置检测器。
isAll() ¶ public
isAll(list<string> $types): bool
检查请求是否匹配所有给定类型。
允许您测试多种类型并联合结果。有关如何添加其他类型和内置类型的详细信息,请参阅 Request::is()。
参数
-
list<string>
$types 要检查的类型。
返回值
bool
另请参阅
normalizeHeaderName() ¶ protected
normalizeHeaderName(string $name): string
将标头名称规范化为 SERVER 版本。
参数
-
string
$name 标题名称。
返回值
string
processUrlOption() ¶ protected
processUrlOption(array<string, mixed> $config): array<string, mixed>
根据 url
选项设置环境变量以方便 UriInterface 实例生成。
query
选项也会根据 URL 的查询字符串进行更新。
参数
-
array<string, mixed>
$config 配置数组。
返回值
array<string, mixed>
referer() ¶ public
referer(bool $local = true): string|null
返回引用此请求的来源。
参数
-
bool
$local optional 尝试返回本地地址。本地地址不包含主机名。
返回值
string|null
setTrustedProxies() ¶ public
setTrustedProxies(list<string> $proxies): void
注册受信任代理。
参数
-
list<string>
$proxies 受信任代理的 ip 列表
返回值
void
subdomains() ¶ public
subdomains(int $tldLength = 1): list<string>
获取主机的子域。
参数
-
int
$tldLength 可选 您的顶级域名 (TLD) 包含的段数。例如:
example.com
包含 1 个 TLD。而example.co.uk
包含 2 个。
返回值
list<string>
validateUploadedFiles() ¶ protected
validateUploadedFiles(array $uploadedFiles, string $path): void
递归验证上传的文件数据。
参数
-
array
$uploadedFiles 要验证的新文件数组。
-
string
$path 到目前为止的路径。
返回值
void
抛出
InvalidArgumentException
如果任何叶子元素不是有效文件。
withAddedHeader() ¶ public
withAddedHeader(string $name, string|string[] $value): static
获取修改后的请求,其中包含提供的标头。
将保留现有的标头值。提供的将追加到现有的值中。
参数
-
string
$name 标题名称。
-
string|string[]
$value 标题值
返回值
static
链接
withAttribute() ¶ public
withAttribute(string $name, mixed $value): static
返回具有指定请求属性的实例。
此方法允许设置单个派生请求属性,如 getAttributes() 中所述。
此方法必须以保留消息不变性的方式实现,并且必须返回具有更新属性的实例。
参数
-
string
$name 属性名称。
-
mixed
$value 属性的值。
返回值
static
withBody() ¶ public
withBody(StreamInterface $body): static
返回具有指定消息正文的实例。
主体必须是 StreamInterface 对象。
此方法必须以保留消息不变性的方式实现,并且必须返回具有新主体流的新实例。
参数
-
StreamInterface
$body 新的请求主体
返回值
static
withCookieCollection() ¶ public
withCookieCollection(Cake\Http\Cookie\CookieCollection $cookies): static
将请求中的 Cookie 替换为提供的 CookieCollection 中的 Cookie。
参数
-
Cake\Http\Cookie\CookieCollection
$cookies cookie 集合
返回值
static
withCookieParams() ¶ public
withCookieParams(array $cookies): static
替换 Cookie 并获取新的请求实例。
数据不需要来自 $_COOKIE 超级全局变量,但必须与 $_COOKIE 的结构兼容。通常,此数据将在实例化时注入。
此方法绝不能更新请求实例的相关 Cookie 标头,也不更新服务器参数中的相关值。
此方法必须以保留消息不变性的方式实现,并且必须返回具有更新 cookie 值的实例。
参数
-
array
$cookies 要使用的新的 cookie 数据。
返回值
static
withData() ¶ public
withData(string $name, mixed $value): static
使用新的请求数据元素更新请求。
返回更新的请求对象。此方法返回一个新的请求对象,不会就地修改请求。
如果您需要替换所有请求数据,请使用withParsedBody()
。
参数
-
string
$name 要将 $value 插入的点分隔路径。
-
mixed
$value 要插入请求数据的值。
返回值
static
withEnv() ¶ public
withEnv(string $key, string $value): static
使用新的环境数据元素更新请求。
返回更新的请求对象。此方法返回一个新的请求对象,不会就地修改请求。
参数
-
string
$key 您要写入的键。
-
string
$value 要设置的值
返回值
static
withHeader() ¶ public
withHeader(string $name, string|string[] $value): static
获取修改后的请求,其中包含提供的标头。
虽然标题名称不区分大小写,但此函数将保留标题的大小写,并从 getHeaders() 中返回。
此方法必须以保留消息不变性的方式实现,并且必须返回具有新的和/或更新的标题和值的实例。
参数
-
string
$name 标题名称。
-
string|string[]
$value 标题值
返回值
static
链接
withMethod() ¶ public
withMethod(string $method): static
更新请求方法并获取新的实例。
虽然 HTTP 方法名称通常都是大写字符,但 HTTP 方法名称区分大小写,因此实现不应该修改给定的字符串。
此方法必须以保留消息不变性的方式实现,并且必须返回具有更改的请求方法的实例。
参数
-
string
$method 要使用的 HTTP 方法。
返回值
static
链接
withParam() ¶ public
withParam(string $name, mixed $value): static
使用新的路由参数更新请求。
返回更新的请求对象。此方法返回一个新的请求对象,不会就地修改请求。
参数
-
string
$name 要将 $value 插入的点分隔路径。
-
mixed
$value 要插入请求参数的值。
返回值
static
withParsedBody() ¶ public
withParsedBody(null|array|object $data): static
更新解析后的正文并获取新的实例。
这些 MAY 在实例化期间注入。
如果请求 Content-Type 为 application/x-www-form-urlencoded 或 multipart/form-data,并且请求方法为 POST,则仅使用此方法注入 $_POST 的内容。
数据 IS NOT REQUIRED 来自 $_POST,但 MUST 是对请求主体内容进行反序列化后的结果。反序列化/解析返回结构化数据,因此,此方法 ONLY 接受数组或对象,或者如果没有任何可解析的内容,则接受 null 值。
例如,如果内容协商确定请求数据是 JSON 负载,则可以使用此方法创建包含反序列化参数的请求实例。
此方法 MUST 以保持消息不变的方式实现,并且 MUST 返回一个具有更新的正文参数的实例。
参数
-
null|array|object
$data 反序列化的正文数据。这通常是一个数组或对象。
返回值
static
withProtocolVersion() ¶ public
withProtocolVersion(string $version): static
返回具有指定 HTTP 协议版本的实例。
版本字符串 MUST 仅包含 HTTP 版本号(例如,“1.1”、“1.0”)。
参数
-
string
$version HTTP 协议版本
返回值
static
withQueryParams() ¶ public
withQueryParams(array $query): static
更新查询字符串数据并获取新的实例。
这些值 SHOULD 在传入请求的过程中保持不变。它们 MAY 在实例化期间注入,例如来自 PHP 的 $_GET 超级全局变量,或者 MAY 从其他值(如 URI)中推断出来。在从 URI 解析参数的情况下,数据 MUST 与 PHP 的 parse_str() 返回的数据兼容,以便处理重复的查询参数以及嵌套集的处理方式。
设置查询字符串参数 MUST NOT 更改请求存储的 URI,也不更改服务器参数中的值。
此方法 MUST 以保持消息不变的方式实现,并且 MUST 返回一个具有更新的查询字符串参数的实例。
参数
-
array
$query 要使用的查询字符串数据
返回值
static
链接
withRequestTarget() ¶ public
withRequestTarget(string $requestTarget): static
使用特定请求目标创建新实例。
可以使用此方法覆盖从请求的 Uri 推断出的请求目标。这还可以更改请求目标的形式为绝对形式、授权形式或星号形式
参数
-
string
$requestTarget 请求目标。
返回值
static
链接
withUploadedFiles() ¶ public
withUploadedFiles(array $uploadedFiles): static
更新请求,替换文件并创建新实例。
此方法 MUST 以保持消息不变的方式实现,并且 MUST 返回一个具有更新的正文参数的实例。
参数
-
array
$uploadedFiles 上传的文件对象数组。
返回值
static
抛出
InvalidArgumentException
当 $files 包含无效对象时。
withUri() ¶ public
withUri(UriInterface $uri, bool $preserveHost = false): static
返回具有指定 URI 的实例。
警告替换 Uri 不会更新 base
、webroot
和 url
属性。
参数
-
UriInterface
$uri 新的请求 uri
-
bool
$preserveHost 可选 是否保留主机。
返回值
static
withoutAttribute() ¶ public
withoutAttribute(string $name): static
返回没有指定请求属性的实例。
此方法允许删除在 getAttributes() 中描述的单个派生请求属性。
此方法 MUST 以保持消息不变的方式实现,并且 MUST 返回删除属性的实例。
参数
-
string
$name 属性名称。
返回值
static
抛出
InvalidArgumentException
withoutData() ¶ public
withoutData(string $name): static
更新请求以删除数据元素。
返回更新的请求对象。此方法返回一个新的请求对象,不会就地修改请求。
参数
-
string
$name 要删除的点分隔路径。
返回值
static
withoutHeader() ¶ public
withoutHeader(string $name): static
获取修改后的请求,不包含提供的标头。
标头解析 MUST 在不区分大小写的情况下完成。
此方法 MUST 以保持消息不变的方式实现,并且 MUST 返回删除命名标头的实例。
参数
-
string
$name 要删除的标头名称。
返回值
static