Skip to content
Yi Xian edited this page Dec 1, 2016 · 1 revision

hook实现与接口实现完全一致, 不同的是hook要放在api目录下的hooks中, 同时在配置文件中指定phprs\Router的hooks

hook会在api被调用前, 按配置的顺序执行, 只有匹配路由规则的hook会被执行.

hook中即可以修改请求, 也可以修改响应.

如果要中途结束hook的执行链路(不再执行后续hook和api), 可以指定 @return({"break", 1}) 或者 @return({"break", $is_break})

  • 示例

    /**
     * @path("/hw")
     */
    class HookApiName
    {
         /**
         * uri中提取app名,并把app从uri中去掉
         * @route({"GET","/"})
         * @param({"app", "$.app_name"})
         * @param({"ori_path", "$.path"})
         * @param({"dest_path", "$._SERVER.REQUEST_URI"})
         */
         function fetchAppName($ori_path, &$dest_path, &$app){
             $app = $ori_path[0];
             array_shift($ori_path);
             $dest_path = '/hw/'.implode('/', $ori_path);
         }
    }
Clone this wiki locally