(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/([^/]+)/([^/])+#", //匹配以 "/product" 開頭的請求 URI
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", //匹配以 "/product" 開頭的請求 URI
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 將 regex 路由新增至 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));
?>