gene框架文档 - 路由类 gene_router
路由类 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");
gene框架文档 - 路由类 gene_router的更多相关文章
- gene框架文档 - 概述
欢迎使用Gene框架 最新版本:V1.2.2 开源地址:https://github.com/sasou/php-gene 作者:sasou 文档地址:http://php-gene.com/doc ...
- MvcPager帮助文档 — PagerOptions 类
http://www.webdiyer.com/mvcpager2/docs/pageroptions/ MvcPager帮助文档 — PagerOptions 类 表示包含MvcPager分页控件相 ...
- Mybatis 框架文档 超具体笔记
1 Mybatis入门 1.1 单独使用jdbc编程问题总结 1.1.1 jdbc程序 Public static void main(String[] args) { Connec ...
- selenium浏览器自动化测试框架文档(修正版)
写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出不穷,但是,能够在项目中持之以恒的实践自动化测试的团队,却依旧不是非常多.有的团队知道怎么做,做的还不够好:有的团队还 ...
- 【ElasticSearch】文档路由的原理
ElasticSearch集群环境下新增文档如何确认该文档被分配到哪个分片中? 路由算法: ⾸先这肯定不会是随机的,否则将来要获取⽂档的时候我们就不知道从何处寻找了.实际上,这个过程是根据下⾯这个公式 ...
- XMLHelper类 源码(XML文档帮助类,静态方法,实现对XML文档的创建,及节点和属性的增、删、改、查)
以下是代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sy ...
- 关于XML文档操作类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.X ...
- java WordUtils word文档工具类
package com.sicdt.library.core.utils; import java.io.ByteArrayOutputStream; import java.io.IOExcepti ...
- 利用NPOI导出Word文档帮助类
/// <summary> /// NPOI操作Word /// </summary> public class NpoiWordHelper { /// <summar ...
随机推荐
- SQL 存储过程入门(事务)(四)
SQL 存储过程入门(事务)(四) 本篇我们来讲一下事务处理技术. 为什么要使用事务呢,事务有什么用呢,举个例子. 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我 ...
- 图文安装Windows Template Library - WTL Version 9.0
从http://wtl.sourceforge.net/下载 WTL 9.0,或者点此链接下载:WTL90_4140_Final.zip,然后解压到你的VC目录下面, 我的地址是:C:\Program ...
- HANA Studio打开系统显示Secure storage is locked
之前一直用着好好的,今天打开HANA Studio突然发现一个系统都不在了: 提示:‘Secure storage is locked’ 我点旁边的Unlocked没有任何反应,右键也没有功能了.如下 ...
- aliyun ubuntu mysql
http://www.codingyun.com/article/38.html ------------ python install mysql module ubuntu下mysql-pytho ...
- protobuf-net
protobuf是google的一个开源项目,可用于以下两种用途: (1)数据的存储(序列化和反序列化),类似于xml.json等: (2)制作网络通信协议. 源代码下载地址:https://gith ...
- C# 事件和委托
相信大家在面试的时候会经常问到事件和委托的区别,为什么.net中需要事件和委托这样类似的问题吧,对于一些初学者来说可平时用的过程中也不知道为什么, 只知道这样用,而对于其中的实现机制不是很清楚, 所以 ...
- github神器--Atom编辑器初体验
Atom 1.0正式式版已经出来好几天,自从听说github出了这神器之后,一直想体验一吧,这两天终于体验上. 下载: https://atom.io/ 其实,我的网速还不错,但总是下载到一半就没网速 ...
- Solr官方文档翻译-About & Getting Started
关于(About) 官方文档介绍了所有的Apache Solr实现的重要特性和功能.它是免费的,可以到http://lucene.apache.org/solr/下载. 为了更加的深入和广泛,设计成一 ...
- JS魔法堂:那些困扰你的DOM集合类型
一.前言 大家先看看下面的js,猜猜结果会怎样吧! 可选答案: ①. 获取id属性值为id的节点元素 ②. 抛namedItem is undefined的异常 var nodes = documen ...
- Scrum 项目4.0--软件工程
1.准备看板. 2.任务认领,并把认领人标注在看板上的任务标签上. 林宇粲:处理数据的存储:目前先进行数据库表的分析和创建. 蔡舜:对复利计算,单利计算,代码进行编写. 王昕明:编写一些用户登录,操作 ...