2024年PHP开发者大会日本站

Yaf_Route_Regex::__construct

(Yaf >=1.0.0)

Yaf_Route_Regex::__constructYaf_Route_Regex 构造函数

描述

public Yaf_Route_Regex::__construct(
    string $match,
    array $route,
    array $map = ?,
    array $verify = ?,
    string $reverse = ?
)

参数

match

一个完整的正则表达式模式,将用于匹配请求uri,如果未匹配,Yaf_Route_Regex 将返回 false

route

当匹配模式匹配请求uri时,Yaf_Route_Regex 将使用此参数来决定路由到哪个m/c/a。

此数组中的m/c/a都是可选的,如果未指定特定值,则将路由到默认值。

map

一个数组,用于为匹配结果中的捕获分配名称。

verify

reverse

一个字符串,用于组装URL,参见 Yaf_Route_Regex::assemble()

注意:

此参数在2.3.0版本中引入

返回值

示例

示例 #1 Yaf_Route_Regex()示例

<?php
/**
* 将正则表达式路由添加到Yaf_Router路由栈
*/
Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name",
new
Yaf_Route_Regex(
"#^/product/([^/]+)/([^/])+#", //匹配请求uri开头的"/product"
array(
'controller' => "product", //路由到product控制器
),
array(
1 => "name", //现在您可以调用 $request->getParam("name")
2 => "id", //获取匹配模式中的第一个捕获。
)
)
);
?>

示例 #2 Yaf_Route_Regex(自2.3.0版本起)()示例

<?php
/**
* 使用匹配结果作为MVC名称
*/
Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name",
new
Yaf_Route_Regex(
"#^/product/([^/]+)/([^/])+#i", //匹配请求uri开头的"/product"
array(
'controller' => ":name", //路由到:name,即匹配结果中的$1作为控制器名称
),
array(
1 => "name", //现在您可以调用 $request->getParam("name")
2 => "id", //获取匹配模式中的第一个捕获。
)
)
);
?>

示例 #3 Yaf_Route_Regex 和命名捕获组(自2.3.0版本起)()示例

<?php
/**
* 使用匹配结果作为MVC名称
*/
Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name",
new
Yaf_Route_Regex(
"#^/product/(?<name>[^/]+)/([^/])+#i", //匹配请求uri开头的"/product"
array(
'controller' => ":name", //路由到:name,
//匹配结果中命名捕获组'name'作为控制器名称
),
array(
2 => "id", //获取匹配模式中的第一个捕获。
)
)
);
?>

示例 #4 Yaf_Route_Regex()示例

<?php
/**
* 通过调用addconfig将正则表达式路由添加到Yaf_Router路由栈
*/
$config = array(
"name" => array(
"type" => "regex", //Yaf_Route_Regex 路由
"match" => "#(.*)#", //匹配任意请求uri
"route" => array(
'controller' => "product", //路由到product控制器
'action' => "dummy", //路由到dummy动作
),
"map" => array(
1 => "uri", //现在您可以调用 $request->getParam("uri")
),
),
);
Yaf_Dispatcher::getInstance()->getRouter()->addConfig(
new
Yaf_Config_Simple($config));
?>

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top