gene框架文档 - 路由类 gene_router
2018-06-18 04:11:19来源:未知 阅读 ()
路由类 Gene\Router
-
介绍
Gene\Router 是gene框架的核心类之一,本框架区别于其他常见框架的最大地方就是独特、强大、简单的路由定义等。
路由强大灵活,支持回调、类方法;支持rest、http请求方式(get,post,put,patch,delete,trace,connect,options,head)等; 支持定义全局、局部钩子,每个方法可以定义清理全局钩子等。 -
实例化
初始化路由,传递缓存key,将会把路由配置缓存起来。
Gene\Router如果作为gene_application应用的路由配置使用,可以不传递缓存key,自动沿用应用的标志名称;如果作为一个独立的功能使用,则需要传递缓存key,区别不同的路由配置。参数:
参数 类型 是否必填 注释 keyName String 否 路由缓存标志 返回值: Gene\Router实例化对象本身。
实例:
//实例化路由对象 $router = new Gene\Router();
-
设置路由系列方法
方法:get,post,put,patch,delete,trace,connect,options,head;
设置路由的方法,涵盖rest操作的基本方法。 路由路径支持参数,回调方法支持类方法和匿名函数,钩子定义路由钩子及全局钩子。参数:
参数 类型 是否必填 注释 routerPath String 是 路由路径,支持参数。 callback String or Closure 是 回调方法,支持类方法和匿名函数。 hook String 否 路由钩子,设置钩子、设置全局钩子。 返回值: Gene\Router实例化对象本身。
实例1:路由设置类方法
访问路由地址,将会调用设置的类的方法。 类方法的格式:classNanme@methodName.
比如: index@list;//实例化路由对象 $router = new Gene\Router(); //路由设置类方法 $router->get("/","Controllers_Index@index");
实例2:路由设置匿名函数
访问路由地址,将会调用设置的匿名函数。
//实例化路由对象 $router = new Gene\Router(); //路由设置匿名函数 $router->get("/",function(){ echo "index"; });
实例3:路由设置支持参数
访问路由地址,将会把定义的路由参数传递给回调方法里面。
参数的格式:冒号后面加参数名。
比如:":id"。
回调方法里面获取参数:路由里面的参数(可能有多个),作为一个数组传递给回调方法,回调方法里面可以直接获取。//实例化路由对象 $router = new Gene\Router(); //路由设置支持参数 $router->get("/news/:id.html",function($params){ echo "id:" , $params['id']; });
实例4:路由设置钩子
路由钩子可以设置当前路由的钩子,也可以设置全局钩子,或者禁用全局钩子。
钩子的格式:curHookName@globalHook。
globalHook参数列表: clearBefore 禁用前置全局钩子
clearBefore 禁用后置全局钩子
clearAll 禁用前置、后置全局钩子
注意:路由里面设置钩子过后,需要调用钩子定义方法定义需要的钩子。//实例化路由对象 $router = new Gene\Router(); //路由设置钩子 $router->get("/admin/index", Controllers_Admin_Index@index, "adminHook"); /* 定义后台管理员权限检查钩子 */ $router->hook("adminHook", function () { if (!isset($_SESSION['admin']['user_id'])) { die('没有操作权限!'); } });
-
hook
定义钩子,可以自定义钩子名称(before、after除外)。
before:默认前置全局钩子;
after:默认后置全局钩子;
全局钩子定义后默认都会执行,除非路由定义里面声明排除:
比如排除前置全局钩子:@clearBefore;参数:
参数 类型 是否必填 注释 hookName String 是 钩子名称。 callback String or Closure 是 回调方法,支持类方法和匿名函数。 返回值: Gene\Router实例化对象本身。
实例1:定义前置全局钩子
//实例化路由对象 $router = new Gene\Router(); //定义前置全局钩子 $router->hook("before", function(){ echo " before "; });
实例2:定义后置全局钩子
//实例化路由对象 $router = new Gene\Router(); //定义后置全局钩子 $router->hook("after", function($params){ echo " after "; if(is_array($params))var_dump($params); });
实例3:定义自定义钩子
//实例化路由对象 $router = new Gene\Router(); //定义自定义钩子 $router ->hook("webCheck", function () { isset($_SESSION) || session_start(); if (!isset($_SESSION['user']['user_id'])) { header('/login.html', 302); die; } });
-
group
路由分组方法。
如果有多个路由定义公用了共同的前缀,就可以使用group方法定义前缀。
group方法必须成对使用,形成闭环。 其他类似功能方法:prefix。参数:
参数 类型 是否必填 注释 name String 否 分组名称,如果参数不为空就是打开分组,为空就是关闭分组; 返回值: Gene\Router实例化对象本身。
实例:
//实例化路由对象 $router = new Gene\Router(); //路由分组:将后台的用户管理放在一个分组里面 $router ->group("/admin/user") ->get("/add", "Controllers_Admin_User@add", "adminAuth@clearAll") ->post("/addPost", "Controllers_Admin_User@addPost", "adminAuth@clearBefore") ->get("/edit/:id", "Controllers_Admin_User@edit", "adminAuth@clearAll") ->post("/editPost", "Controllers_Admin_User@editPost", "adminAuth@clearBefore") ->get("/del/:id", "Controllers_Admin_User@del", "adminAuth@clearBefore") ->group();
-
error
定义路由错误处理。
默认内置了401处理钩子,如果定义了401错误,路由处理失败会自动调用。参数:
参数 类型 是否必填 注释 hookName String 是 钩子名称。 callback String or Closure 是 回调方法,支持类方法和匿名函数。 返回值: Gene\Router实例化对象本身。
实例:
//实例化路由对象 $router = new Gene\Router(); //定义401 $router->error(401, function () { echo " 401 "; });
-
getTime
获取当前路由配置的缓存时间。
参数:
无
返回值: String。
实例:
//实例化路由对象 $router = new Gene\Router(); $time = $router->getTime();
-
getEvent
获取当前路由缓存的事件。
参数:
无
返回值: array。
实例:
//实例化路由对象 $router = new Gene\Router(); $event = $router->getEvent();
-
getTree
获取当前路由缓存的路由定义。
参数:
无
返回值: array。
实例:
//实例化路由对象 $router = new Gene\Router(); $tree = $router->getTree();
-
delEvent
删除当前路由缓存的时间。
参数:
参数 类型 是否必填 注释 keyName String 否 缓存名称, 默认删除当前项目。 返回值: boolean。
实例:
//实例化路由对象 $router = new Gene\Router(); $result = $router->delEvent();
-
delTree
删除当前路由缓存的路由定义。
参数:
参数 类型 是否必填 注释 keyName String 否 缓存名称, 默认删除当前项目。 返回值: boolean。
实例:
//实例化路由对象 $router = new Gene\Router(); $result = $router->delTree();
-
clear
清空当前路由缓存的路由定义和事件。
参数:
参数 类型 是否必填 注释 keyName String 否 缓存名称, 默认删除当前项目。 返回值: boolean。
实例:
//实例化路由对象 $router = new Gene\Router(); $result = $router->clear();
-
getRouter
获取路由对象。
参数:
无
返回值: Gene\Router实例化对象本身。
实例:
//获取实例化路由对象 $router = Gene\Router::getRouter();
-
run
该方法执行后会运行路由定义。默认web应用可以不传参数,如果是cli方式下访问或者执行任务,则需要传递参数。
前面gene_application里面也有run方法,其实是调用的Gene\Router里面的run。
两者的区别是: gene_application里面封装了配置加载更新的逻辑,不修改是不会重复加载的,实现了高效率。
Gene\Router里面没有处理缓存判断,如果单独使用Gene\Router模块的话,用户需要使用getTime方法获取已缓存时间,进行判断处理。参数:
参数 类型 是否必填 注释 method String 否 请求方式(默认自动取访问方式:get、post等) path String 否 请求路径(默认自动取访问路径:比如/admin/login) 返回值: Gene\Router实例化对象本身。
实例1:web应用
//实例化路由对象 $router = new Gene\Router(); //配置路由 $router->clear() ->get("/",function(){ echo "index"; }) ->run();
实例2:cli应用
//实例化路由对象 $router = new Gene\Router(); //配置路由 $router->clear() ->get("/",function(){ echo "index"; }) ->run('get', '/admin/task')
-
runError
运行已定义的error。
参数:
参数 类型 是否必填 注释 errorName String 是 error名称。 返回值: boolean。
实例:
//实例化路由对象 $router = new Gene\Router(); $result = $router->runError("401");
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:c语言实现log日志的写入
- 一个工业级、跨平台、轻量级的 tcp 网络服务框架:gevent 2020-06-05
- Window中的shellcode编写框架(入门篇) 2020-03-31
- C++ STL框架 2020-03-29
- 【新年呈献】高性能网络通信框架 HP-Socket v5.7.1 2020-01-07
- 分享一个Linux C++消息通信框架TCPSHM 2019-11-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash