类 InflectedRoute
此路由类将透明地推断控制器和插件路由参数,因此请求 /my_controller
将被解析为 ['controller' => 'MyController']
常量
属性摘要
-
$_compiledRoute protected
string|null
已编译的路由正则表达式
-
$_extensions protected
list<string>
此路由连接的扩展列表。
-
$_greedy protected
bool
此路由是否为贪婪路由?贪婪路由在模板中包含
/*
-
$_inflectedDefaults protected
array|null
用于跟踪默认值是否已被推断的标记。
-
$_name protected
string|null
路由的名称。使用 Route::getName(); 获取。
-
$defaults public
array
路由的默认参数
-
$keys public
array
路由中命名段的数组。
/{controller}/{action}/{id}
包含 3 个关键元素 -
$middleware protected
array
应该应用的中介软件列表。
-
$options public
array<string, mixed>
路由的附加参数数组。
-
$template public
string
路由的模板字符串。
方法摘要
-
__construct() public
路由的构造函数
-
__set_state() public static
设置状态魔术方法以支持 var_export
-
_matchMethod() protected
检查 URL 的 HTTP 方法是否匹配。
-
_parseArgs() protected
将传递的参数解析为传递参数列表。
-
_parseExtension() protected
如果 $url 包含注册的扩展,则从 $url 中删除扩展。如果没有找到注册的扩展,则不返回扩展,并返回未修改的 URL。
-
_persistParams() protected
将持久参数应用于 URL 数组。持久参数是在创建路由期间使用的特殊键,用于强制在 URL 数组中省略路由参数时保留路由参数。
-
_underscore() protected
用于在 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 解码。
参数
-
string
$template 包含参数占位符的模板字符串
-
array
$defaults optional 路由的默认值。
-
array<string, mixed>
$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
_matchMethod() ¶ protected
_matchMethod(array $url): bool
检查 URL 的 HTTP 方法是否匹配。
参数
-
array
$url 正在生成的 URL 的数组。
返回值
bool
_parseArgs() ¶ protected
_parseArgs(string $args, array $context): list<string>
将传递的参数解析为传递参数列表。
如果给定命名参数 $param 的 $val 匹配给定 $rule,则根据 $context 返回 true。当前实现的规则类型是控制器、动作和匹配,它们可以相互组合。
参数
-
string
$args 包含传递参数的字符串。例如:/1/foo
-
array
$context 当前路由上下文,应包含控制器/动作键。
返回值
list<string>
_parseExtension() ¶ protected
_parseExtension(string $url): array
如果 $url 包含注册的扩展,则从 $url 中删除扩展。如果没有找到注册的扩展,则不返回扩展,并返回未修改的 URL。
参数
-
string
$url 要解析的 URL。
返回值
array
_persistParams() ¶ protected
_persistParams(array $url, array $params): array
将持久参数应用于 URL 数组。持久参数是在创建路由期间使用的特殊键,用于强制在 URL 数组中省略路由参数时保留路由参数。
参数
-
array
$url 要应用持久参数的数组。
-
array
$params 要替换持久参数的持久值数组。
返回值
array
_underscore() ¶ protected
_underscore(array $url): array
用于在 URL 数组中对键进行下划线处理的辅助方法。
参数
-
array
$url URL 键的数组。
返回值
array
_writeRoute() ¶ protected
_writeRoute(): void
构建路由正则表达式。
使用模板、默认值和选项属性来编译一个正则表达式,该表达式可用于解析请求字符串。
返回值
void
_writeUrl() ¶ protected
_writeUrl(array $params, array $pass = [], array $query = []): string
将匹配的路由数组转换为 URL 字符串。
使用用于创建路由的模板组合字符串 URL。
参数
-
array
$params 要转换为字符串 URL 的参数
-
array
$pass optional 附加传递的参数
-
array
$query optional 参数数组
返回值
string
compile() ¶ public
compile(): string
编译路由的正则表达式。
修改 defaults 属性,以便设置所有必要的键,并使用命名路由元素填充 $this->names。
返回值
string
match() ¶ public
match(array $url, array $context = []): string|null
对前缀、控制器和插件参数进行下划线处理,然后将它们传递给父类
如果 URL 匹配路由参数和设置,则返回生成的字符串 URL。如果 URL 不匹配路由参数,则返回 false。此方法处理反向路由或将 URL 数组转换为字符串 URL。
参数
-
array
$url 要转换为字符串的参数数组。
-
array
$context optional 当前请求上下文的数组。包含诸如当前主机、方案、端口和基本目录等信息。
返回值
string|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 方法。
返回值
array|null
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
属性详情
$_inflectedDefaults ¶ protected
用于跟踪默认值是否已被推断的标记。
默认值需要被词形变化,以便它们与 match() 将创建的词形变化匹配。
类型
array|null