(Yaf >=1.0.0)
Yaf_Route_Regex::__construct — Yaf_Route_Regex 构造函数
$match
,$route
,$map
= ?,$verify
= ?,$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));
?>