类 DashedRoute
此路由类将透明地对控制器、操作和插件路由参数进行词形转换,因此请求 /my-plugin/my-controller/my-action
将解析为 ['plugin' => 'MyPlugin', 'controller' => 'MyController', 'action' => 'myAction']
常量
属性概述
-
$_compiledRoute protected
字符串|null
编译后的路由正则表达式
-
$_extensions protected
列表<字符串>
与该路由关联的扩展列表。
-
$_greedy protected
布尔
此路由是否为贪婪路由?贪婪路由在其模板中包含
/*
-
$_inflectedDefaults protected
数组|null
用于跟踪默认值是否已进行词形转换的标志。
-
$_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
-
_camelizePlugin() protected
将先前带破折号的插件路由转换为驼峰式,同时考虑插件供应商
-
_dasherize() protected
将 URL 数组中的键转换为带破折号的辅助方法。
-
_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
获取路由的标准化 plugin.controller:action 名称。
-
hostMatches() public
检查主机是否匹配路由要求
-
match() public
在将参数传递给父类之前,将控制器、操作和插件参数转换为带破折号的格式。
-
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 optional 路由的默认值。
-
数组<字符串, 混合>
$options optional 路由的附加选项数组
抛出
InvalidArgumentException
当 `$options['_method']` 不在 `VALID_METHODS` 列表中时。
__set_state() ¶ public static
__set_state(array<string, mixed> $fields): static
设置状态魔术方法以支持 var_export
此方法有助于想要实现路由缓存的应用程序。
参数
-
array<string, mixed>
$fields 对象属性的键值对
返回值
static
_camelizePlugin() ¶ protected
_camelizePlugin(string $plugin): string
将先前带破折号的插件路由转换为驼峰式,同时考虑插件供应商
参数
-
string
$plugin 插件名称
返回值
字符串
_dasherize() ¶ protected
_dasherize(array $url): array
将 URL 数组中的键转换为带破折号的辅助方法。
参数
-
array
$url 一个 URL 键数组。
返回值
数组
_matchMethod() ¶ protected
_matchMethod(array $url): bool
检查 URL 的 HTTP 方法是否匹配。
参数
-
array
$url 用于生成 URL 的数组。
返回值
布尔
_parseArgs() ¶ protected
_parseArgs(string $args, array $context): list<string>
将传递的参数解析为已传递参数列表。
如果给定的命名参数 $param 的 $val 匹配给定的 $rule(取决于 $context),则返回 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 数组中省略时保持持久性。
参数
-
array
$url 要应用持久参数的数组。
-
array
$params 要替换持久参数的持久值数组。
返回值
数组
_writeRoute() ¶ protected
_writeRoute(): void
构建路由正则表达式。
使用 template、defaults 和 options 属性来编译一个正则表达式,该表达式可用于解析请求字符串。
返回值
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 不匹配路由参数,则返回 false。此方法处理反向路由或将 URL 数组转换为字符串 URL。
参数
-
array
$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 optional HTTP 方法。
返回值
数组|null
parseRequest() ¶ public
parseRequest(Psr\Http\Message\ServerRequestInterface $request): array|null
检查给定 URL 是否可以由此路由解析。
如果路由可以解析,将返回一个参数数组;否则将返回 null
。
参数
-
Psr\Http\Message\ServerRequestInterface
$request 要尝试解析的 URL。
返回值
数组|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