类 PluginShortRoute
插件短路由,它将插件参数复制到控制器参数。它用于支持 /{plugin} 路由。
常量
属性摘要
-
$_compiledRoute protected
字符串|空
编译后的路由正则表达式
-
$_extensions protected
列表<字符串>
此路由连接的扩展列表。
-
$_greedy protected
布尔值
此路由是否为贪婪路由?贪婪路由在其模板中包含
/*
-
$_inflectedDefaults protected
数组|空
用于跟踪默认值是否已进行词形变化的标志。
-
$_name protected
字符串|空
路由的名称。使用 Route::getName(); 获取。
-
$defaults public
数组
路由的默认参数
-
$keys public
数组
路由中命名段的数组。
/{controller}/{action}/{id}
包含 3 个键元素 -
$middleware protected
数组
应该应用的中间件列表。
-
$options public
数组<字符串, 混合>
路由的附加参数数组。
-
$template public
字符串
路由模板字符串。
方法摘要
-
__construct() public
路由的构造函数
-
__set_state() public static
设置状态魔术方法以支持 var_export
-
_matchMethod() protected
检查 URL 的 HTTP 方法是否匹配。
-
_parseArgs() protected
将传递的参数解析为传递参数列表。
-
_parseExtension() protected
如果 $url 包含注册的扩展名,则从中删除扩展名。如果未找到注册的扩展名,则不会返回任何扩展名,并且将返回未修改的 URL。
-
_persistParams() protected
将持久参数应用于 URL 数组。持久参数是在路由创建期间使用的特殊键,用于强制路由参数在 URL 数组中省略时保持不变。
-
_underscore() protected
帮助方法,用于对 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 对象属性的键值对
返回
静态
_matchMethod() ¶ 受保护
_matchMethod(array $url): bool
检查 URL 的 HTTP 方法是否匹配。
参数
-
array
$url 正在生成的 URL 的数组。
返回
布尔值
_parseArgs() ¶ 受保护
_parseArgs(string $args, array $context): list<string>
将传递的参数解析为传递参数列表。
如果给定命名的 $param 的 $val 与给定的 $rule 匹配(取决于 $context),则返回 true。当前实现的规则类型是控制器、操作和匹配,可以相互组合。
参数
-
string
$args 包含传递参数的字符串。例如:/1/foo
-
array
$context 当前路由上下文,应包含控制器/操作键。
返回
列表<字符串>
_parseExtension() ¶ 受保护
_parseExtension(string $url): array
如果 $url 包含注册的扩展名,则从中删除扩展名。如果未找到注册的扩展名,则不会返回任何扩展名,并且将返回未修改的 URL。
参数
-
string
$url 要解析的 URL。
返回
数组
_persistParams() ¶ 受保护
_persistParams(array $url, array $params): array
将持久参数应用于 URL 数组。持久参数是在路由创建期间使用的特殊键,用于强制路由参数在 URL 数组中省略时保持不变。
参数
-
array
$url 要应用持久参数的数组。
-
array
$params 要替换持久值的持久值数组。
返回
数组
_underscore() ¶ 受保护
_underscore(array $url): array
帮助方法,用于对 URL 数组中的键进行下划线处理。
参数
-
array
$url URL 键的数组。
返回
数组
_writeUrl() ¶ 受保护
_writeUrl(array $params, array $pass = [], array $query = []): string
将匹配的路由数组转换为 URL 字符串。
使用用于创建路由的模板组合字符串 URL。
参数
-
array
$params 要转换为字符串 URL 的参数
-
array
$pass 可选 其他传递参数
-
array
$query 可选 参数数组
返回
字符串
match() ¶ 公共
match(array $url, array $context = []): string|null
反转路由插件快捷方式 URL。如果插件和控制器不相同,则匹配将自动失败。
如果 URL 与路由参数和设置匹配,则返回一个生成的字符串 URL。如果 URL 与路由参数不匹配,则返回 false。此方法处理反向路由或将 URL 数组转换为字符串 URL。
参数
-
array
$url 要转换为字符串的参数数组。
-
array
$context 可选 当前请求上下文的数组。包含有关当前主机、方案、端口和基本目录的信息。
返回
字符串|空
normalizeAndValidateMethods() ¶ 受保护
normalizeAndValidateMethods(list<string>|string $methods): list<string>|string
将方法名称规范化为大写,并验证它们是否为有效的 HTTP 方法。
参数
-
list<string>|string
$methods 方法。
返回
list<string>|string
抛出
InvalidArgumentException
当方法不在 `VALID_METHODS` 列表中时。
parse() ¶ 公共
parse(string $url, string $method = ''): array|null
将字符串 URL 解析为数组。如果找到插件键,它将被复制到控制器参数中。
如果路由可以解析,则将返回参数数组;否则将返回 `null`。如果字符串 URL 与路由的正则表达式匹配,则将对其进行解析。
参数
-
string
$url 要解析的 URL
-
string
$method 可选 HTTP 方法
返回
数组|空
parseRequest() ¶ 公共
parseRequest(Psr\Http\Message\ServerRequestInterface $request): array|null
检查给定 URL 是否可以由此路由解析。
如果路由可以解析,则将返回参数数组;否则将返回 `null`。
参数
-
Psr\Http\Message\ServerRequestInterface
$request 要尝试解析的 URL。
返回
数组|空
setExtensions() ¶ 公共
setExtensions(list<string> $extensions): $this
设置此路由支持的扩展名。
参数
-
list<string>
$extensions 要设置的扩展。
返回
$this
setMethods() ¶ 公共
setMethods(list<string> $methods): $this
设置此路由接受的 HTTP 方法。
参数
-
list<string>
$methods 要接受的 HTTP 方法。
返回
$this
抛出
InvalidArgumentException
当方法不在 `VALID_METHODS` 列表中时。
setMiddleware() ¶ 公共
setMiddleware(array $middleware): $this
设置应应用于此路由的中间件的名称。
参数
-
array
$middleware 要应用于此路由的中介软件名称列表。中介软件名称只有在路由匹配后才会被检查。
返回
$this
setPass() ¶ 公共
setPass(list<string> $names): $this
设置将转换为传递参数的参数名称
参数
-
list<string>
$names 要传递的参数的名称。
返回
$this
setPatterns() ¶ 公共
setPatterns(array<string, string> $patterns): $this
设置路由参数的正则表达式模式
如果任何模式包含多字节值,则将启用 `multibytePattern` 模式。
参数
-
array<string, string>
$patterns 要应用于路由元素的模式
返回
$this
setPersist() ¶ 公共
setPersist(array $names): $this
设置将自动持久化的参数名称
持久参数允许您定义在生成新 URL 时应自动包含哪些路由参数。您可以通过在 URL 中重新定义持久参数来覆盖它们,或者通过将持久参数设置为 `false` 来移除它们。
// remove a persistent 'date' parameter
Router::url(['date' => false', ...]);
参数
-
array
$names 要传递的参数的名称。
返回
$this