Yaf_Route_Regex::__construct()
(Yaf >=1.0.0)
The __construct purpose
说明
public Yaf_Route_Regex::__construct(string $match,array $route[,array $map[,array $verify]])
参数
- $match
一个完整的正则表达式,用来匹配一个请求的uri,如果不能匹配,Yaf_Route_Regex将返回FALSE。
- $route
当路由正则匹配成功请求uri时,Yaf_Route_Regex将会用它来决定哪一个m/c/a被路由。
在这个数组中无论是m/c/a都是最优的,如果你没有提供一个明确的值,它将会以默认方式被路由。另外,你也可以使用map的结果作为m/c/a的结果.
- $map
将匹配到的结果捕捉放到一个已经命名好的数组中。
- $verify
返回值
范例
Example #1 Yaf_Route_Regex()example
<?php /** * Add a regex route to Yaf_Router route stack */ Yaf_Dispatcher::getInstance() >getRouter() >addRoute("name", new Yaf_Route_Regex( "#^/product/([^/]+)/([^/])+#", //match request uri leading "/product" array( 'controller' => "product", //route to product controller, ), array( 1 => "name", // now you can call $request->getParam("name") 2 => "id", // to get the first captrue in the match pattern. ) ) ); ?>
Example #2 Yaf_Route_Regex(as of 2.3.0)()example
<?php /** * 使用动态的controller */ Yaf_Dispatcher::getInstance() >getRouter() >addRoute("name", new Yaf_Route_Regex( "#^/product/([^/]+)/([^/])+#", //match request uri leading "/product" array( 'controller' => ":name", //使用上面匹配的:name, 也就是$1作为controller ), array( 1 => "name", // now you can call $request->getParam("name") 2 => "id", // to get the first captrue in the match pattern. ) ) ); ?>
Example #3 Yaf_Route_Regex()example
<?php /** * Add a regex route to Yaf_Router route stack by calling addconfig */ $config = array( "name" => array( "type" => "regex", //Yaf_Route_Regex route "match" => "#(.*)#", //match arbitrary request uri "route" => array( 'controller' => "product", //route to product controller, 'action' => "dummy", //route to dummy action ), "map" => array( 1 => "uri", // now you can call $request->getParam("uri") ), ), ); Yaf_Dispatcher::getInstance() >getRouter() >addConfig( new Yaf_Config_Simple($config)); ?>
参见
- Yaf_Router::addRoute() 往Router中添加新的路由
- Yaf_Router::addConfig() 向Router中添加配置文件中定义的路由
- Yaf_Route_Static
- Yaf_Route_Supervar
- Yaf_Route_Simple
- Yaf_Route_Rewrite
- Yaf_Route_Map