类 EntityRoute
将实体匹配到路由
此路由将根据实体进行匹配,并将它的字段映射到 URL 模式,方法是将字段名称与模板变量进行比较。这使得全局更改路由变得容易和方便。
常量
属性摘要
-
$_compiledRoute protected
字符串|null
编译后的路由正则表达式
-
$_extensions protected
列表<字符串>
此路由连接的扩展列表。
-
$_greedy protected
布尔值
此路由是否为贪婪路由?贪婪路由在其模板中包含
/*
-
$_name protected
字符串|null
路由的名称。使用 Route::getName(); 获取。
-
$defaults public
数组
路由的默认参数
-
$keys public
数组
路由中命名段的数组。
/{controller}/{action}/{id}
具有 3 个键元素 -
$middleware protected
数组
应该应用的中间件列表。
-
$options public
数组<字符串, 混合>
路由的附加参数数组。
-
$template public
字符串
路由的模板字符串。
方法摘要
-
__construct() public
路由的构造函数
-
__set_state() public static
设置状态魔术方法以支持 var_export
-
_checkEntity() protected
检查我们是否真的在处理一个实体对象
-
_matchMethod() protected
检查 URL 的 HTTP 方法是否匹配。
-
_parseArgs() protected
将传递的参数解析为传递的参数列表。
-
_parseExtension() protected
如果 URL 包含已注册的扩展,则从 $url 中移除扩展。如果没有找到已注册的扩展,则不返回任何扩展,URL 将保持不变。
-
_persistParams() protected
将持久参数应用于 URL 数组。持久参数是路由创建期间使用的特殊键,用于强制路由参数在 URL 数组中省略时持久化。
-
_writeRoute() protected
构建路由正则表达式。
-
_writeUrl() protected
将匹配的路由数组转换为 URL 字符串。
-
compile() public
编译路由的正则表达式。
-
compiled() public
检查路由是否已编译成正则表达式。
-
getExtensions() public
获取此路由支持的扩展。
-
getMiddleware() public
获取应该应用于此路由的中间件名称。
-
getName() public
获取路由的标准化插件.控制器:操作名称。
-
hostMatches() public
检查主机是否匹配路由要求
-
match() public
根据实体进行匹配,并将它的字段映射到 URL 模式,方法是将字段名称与模板变量进行比较。
-
normalizeAndValidateMethods() protected
将方法名称规范化为大写,并验证它们是否为有效的 HTTP 方法。
-
parse() public
检查给定的 URL 是否可以被此路由解析。
-
parseRequest() public
检查给定的 URL 是否可以被此路由解析。
-
setExtensions() public
设置此路由支持的扩展。
-
setHost() public
设置主机要求
-
setMethods() public
设置此路由接受的 HTTP 方法。
-
setMiddleware() public
设置应该应用于此路由的中间件名称。
-
setPass() public
设置将转换为传递参数的参数名称
-
setPatterns() public
为路由参数设置正则表达式模式
-
setPersist() public
设置将自动持久化的参数名称
-
staticPath() public
获取此路由的静态路径部分。
方法详情
__construct() ¶ public
__construct(string $template, array $defaults = [], array<string, mixed> $options = [])
路由的构造函数
选项
_ext
- 定义此路由使用的扩展。_middleware
- 定义此路由的中间件名称。pass
- 将列出的参数复制到 params['pass'] 中。_method
- 定义路由适用的 HTTP 方法。它可以是有效的 HTTP 方法名称的字符串或数组。_host
- 如果希望此路由仅匹配特定主机名,则定义主机名模式。可以使用.*
和 创建通配符子域/主机,例如*.example.com
匹配example.com
上的所有子域。- '_port` - 如果希望此路由仅匹配特定端口号,则定义端口。
- '_urldecode' - 设置为
false
以在路由解析之前禁用 URL 解码。
参数
-
字符串
$template 包含参数占位符的模板字符串
-
数组
$defaults 可选 路由的默认值。
-
数组<字符串, 混合>
$options 可选 路由的附加选项数组
抛出
InvalidArgumentException
当 `$options['_method']` 不在 `VALID_METHODS` 列表中时。
__set_state() ¶ public static
__set_state(array<string, mixed> $fields): static
设置状态魔术方法以支持 var_export
此方法有助于想要实现路由缓存的应用程序。
参数
-
数组<字符串, 混合>
$fields 对象属性的键值对
返回值
静态
_checkEntity() ¶ protected
_checkEntity(mixed $entity): void
检查我们是否真的在处理一个实体对象
参数
-
混合
$entity 来自 URL 选项的实体值
返回值
空
抛出
RuntimeException
_matchMethod() ¶ protected
_matchMethod(array $url): bool
检查 URL 的 HTTP 方法是否匹配。
参数
-
数组
$url 正在生成的 URL 的数组。
返回值
布尔值
_parseArgs() ¶ protected
_parseArgs(string $args, array $context): list<string>
将传递的参数解析为传递的参数列表。
如果给定命名参数 $param 的 $val 值与根据 $context 给定的 $rule 匹配,则返回 true。当前实现的规则类型是 controller、action 和 match,它们可以相互组合。
参数
-
string
$args 包含传递参数的字符串。例如:/1/foo
-
array
$context 当前路由上下文,应包含 controller/action 键。
返回值
列表<字符串>
_parseExtension() ¶ protected
_parseExtension(string $url): array
如果 URL 包含已注册的扩展,则从 $url 中移除扩展。如果没有找到已注册的扩展,则不返回任何扩展,URL 将保持不变。
参数
-
string
$url 要解析的 URL。
返回值
数组
_persistParams() ¶ protected
_persistParams(array $url, array $params): array
将持久参数应用于 URL 数组。持久参数是路由创建期间使用的特殊键,用于强制路由参数在 URL 数组中省略时持久化。
参数
-
数组
$url 要应用持久参数的数组。
-
array
$params 要替换持久参数的持久值数组。
返回值
数组
_writeRoute() ¶ protected
_writeRoute(): void
构建路由正则表达式。
使用模板、默认值和选项属性来编译正则表达式,该正则表达式可用于解析请求字符串。
返回值
空
_writeUrl() ¶ protected
_writeUrl(array $params, array $pass = [], array $query = []): string
将匹配的路由数组转换为 URL 字符串。
使用用于创建路由的模板来组合字符串 URL。
参数
-
array
$params 要转换为字符串 URL 的参数
-
array
$pass optional 附加的传递参数
-
array
$query optional 参数数组
返回值
字符串
compile() ¶ public
compile(): string
编译路由的正则表达式。
修改 defaults 属性,以便设置所有必要的键,并将 $this->names 填充到命名的路由元素。
返回值
字符串
match() ¶ public
match(array $url, array $context = []): string|null
根据实体进行匹配,并将它的字段映射到 URL 模式,方法是将字段名称与模板变量进行比较。
如果在 $url
和实体中都定义了路由键,则将优先使用 $url
中定义的值。
参数
-
数组
$url 要转换为字符串的参数数组。
-
array
$context optional 当前请求上下文的数组。包含当前主机、方案、端口和基本目录等信息。
返回值
字符串|null
normalizeAndValidateMethods() ¶ protected
normalizeAndValidateMethods(list<string>|string $methods): list<string>|string
将方法名称规范化为大写,并验证它们是否为有效的 HTTP 方法。
参数
-
list<string>|string
$methods 方法。
返回值
list<string>|string
抛出
InvalidArgumentException
当方法不在 `VALID_METHODS` 列表中时。
parse() ¶ public
parse(string $url, string $method): array|null
检查给定的 URL 是否可以被此路由解析。
如果路由可以解析,则将返回参数数组;否则将返回 null
。如果字符串 URL 与路由的正则表达式匹配,则会解析它们。
参数
-
string
$url 要尝试解析的 URL。
-
string
$method 正在解析的请求的 HTTP 方法。
返回值
array|null
抛出
Cake\Http\Exception\BadRequestException
当方法不是空字符串且不在 `VALID_METHODS` 列表中时。
parseRequest() ¶ public
parseRequest(Psr\Http\Message\ServerRequestInterface $request): array|null
检查给定的 URL 是否可以被此路由解析。
如果路由可以解析,则将返回参数数组;否则将返回 null
。
参数
-
Psr\Http\Message\ServerRequestInterface
$request 要尝试解析的 URL。
返回值
array|null
setExtensions() ¶ public
setExtensions(list<string> $extensions): $this
设置此路由支持的扩展。
参数
-
list<string>
$extensions 要设置的扩展。
返回值
$this
setMethods() ¶ public
setMethods(list<string> $methods): $this
设置此路由接受的 HTTP 方法。
参数
-
list<string>
$methods 要接受的 HTTP 方法。
返回值
$this
抛出
InvalidArgumentException
当方法不在 `VALID_METHODS` 列表中时。
setMiddleware() ¶ public
setMiddleware(array $middleware): $this
设置应该应用于此路由的中间件名称。
参数
-
array
$middleware 要应用于此路由的中间件名称列表。在路由匹配之前不会检查中间件名称。
返回值
$this
setPass() ¶ public
setPass(list<string> $names): $this
设置将转换为传递参数的参数名称
参数
-
list<string>
$names 要传递的参数名称。
返回值
$this
setPatterns() ¶ public
setPatterns(array<string, string> $patterns): $this
为路由参数设置正则表达式模式
如果您的任何模式包含多字节值,则将启用 multibytePattern
模式。
参数
-
array<string, string>
$patterns 要应用于路由元素的模式
返回值
$this
setPersist() ¶ public
setPersist(array $names): $this
设置将自动持久化的参数名称
持久参数允许您定义在生成新 URL 时应自动包含哪些路由参数。您可以通过在 URL 中重新定义持久参数来覆盖它们,或通过将持久参数设置为 false
来删除它们。
// remove a persistent 'date' parameter
Router::url(['date' => false', ...]);
参数
-
array
$names 要传递的参数名称。
返回值
$this