11.15. The Yaf_Route class

简介

Yaf_Route_Interface是Yaf路由协议的标准接口, 它的存在使得用户可以自定义路由协议

在PHP5.3之后, 打开yaf.use_namespace的情况下, 也可以使用 Yaf\Route_Interface

 
    Interface 
    Yaf_Route_Interface
    {
abstract public boolean route ( Yaf_Request_Abstract $request );
}
参见
Yaf_Route_Static
Yaf_Route_Simple
Yaf_Route_Supervar
Yaf_Route_Rewrite
Yaf_Route_Regex
接口方法

自Yaf 2.3.0起, 实现本接口的类必须同时实现两个方法:

完整的接口原型


     <?php
     interface Yaf_Route_Interface {
         /* 检查请求是否命中本路由, 命中则接管请求 */
         abstract public function route(Yaf_Request_Abstract $request);

         /* 根据路由信息逆向构建URL */
         abstract public function assemble(array $info, array $query = NULL);
     }
     ?>



route(Yaf_Request_Abstract $request): 如果请求命中本路由, 实现方应当通过调用请求对象的setModuleName(), setControllerName(), setActionName()把路由结果写入$request, 最后调用setRouted()把请求标记为已路由, 并返回TRUE; 返回TRUE以后路由器不会再调用路由链中的其他路由. 如果请求没有命中本路由, 返回FALSE, 路由器会继续尝试下一个路由.

assemble(array $info, array $query = NULL): 路由过程的逆过程. 实现方应当根据$info数组中的路由信息(模块名, 控制器名, 动作名等)按照自身的路由规则逆向拼出一个URL字符串并返回; $query数组用于给生成的URL追加查询字符串. 例如Yaf_Route_Rewrite::assemble()可以根据模块/控制器/动作信息拼出符合其重写规则的URL.