已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Bingo2使用说明1 Bingo2路由分发Bingo2的路由分发主要分成三步,获取路由Key,路由Key映射到Dispatch Key,和最后的路由分发三个部分,流程如图 1.1所示,而且每一步都可以进行自定义。图 1.1 路由分发流程图路由分发的实现主要由Bingo_Controller_Front完成,首先需要得到一个该类的实例化对象并且设置参数。参数列表如下:param array $arrConfighttpEncode : string 输入参数的编码类型 internalEncode : string 内部采用的编码类型,通常是gbk autoDetectEncodeName : string 自动获取编码类型的key。如果设置了httpEncode,则不需要设置该变量 * encode : object ,subclass of Bingo_Encode_Abstract 编码转化的对象,默认是采用uconv,如果采用mbString,需要指定 httpRouter : 获取router的对象,需要是Bingo_Http_Router_Abstract的子类。默认采用Bingo_Http_Router_Pathinfo 如果采用Bingo_Http_Router_Pathinfo,那么还有几个参数 sepOfRouterAndParams : sepOfParams : endOfParams : beginRouterIndex : sepOfRouter : defaultHttpRouter : usePathinfo : defaultRouter : 如果dispatchRouter为空,则采用该默认的Router。 notFoundRouter : 如果所有的dispatcher都dispatch失败后,将采用该router重新进行分发。 如果采用默认的自动分发,则还有以下的参数 actionDir : actions的目录 actionFileSuffix : 文件后缀,默认是.php actionClassNameSuffix : 类名的后缀,默认是Action得到实例化的Bingo_Controller_Front方法如下:$objFrontController = Bingo_Controller_Front:getInstance(array( actionDir = “/home/project/actions”, );此例中Action将分发到/home/project/actions目录中。在设置完静态路由和规则路由后,调用dispatch()执行分发操作。后续所提到的$objFrontController都表示Bingo_Controller_Front的实例。1.1 获取路由Key路由分发的第一步是路由Key的拆分,即对请求的URL分析,得到分发所需要的参数。这部分主要是由Bingo_Htp_Router_Pathinfo完成的,拆分的结果存在Bingo_Http_Request中。默认拆分是用符号“?”分割Query String,用符号“-”分割Params。图1.2是默认的拆分方法。图1.2 Bingo2的URL规范示意图1.2 路由Key映射到Dispatch Key路由分发的第二部是将上一步的拆分Key和实际分发Key做映射。映射主要分为两种,静态路由和规则路由。1.2.1 静态路由设置静态路由设置是一个Key=Value的设置,分发函数会把符合的Key分发到Value的Action中。下面是设置静态路由的例子。$objFrontController-addStaticRouter(prjoect/test, test);1.2.2 规则路由设置规则路由是将复合规则描述的所有url都分发到指定的Action上,主要有两个参数,第一个参数是需要分发的目标Action,第二个参数是一个Array,其中也包含两个参数,如下:param array $rule rule : array /路由规则 regex : array /Router参数的正则 下面是一个规则路由的例子,$objFrontController-addRouterRule(test/hello, array( rule = array(hello, :fname, pb), regex = array( :fname = 0-9 ) );这个路由规则将匹配hello/:fname/pb的url,且:fname为数字。1.3 路由分发比较常用的是自动路由和Controller路由。1.3.1 自动路由分发自动路由分发是在路由规则的基础上,在AcitonDir文件夹中找到对应的Action类,Bingo2的Action类都是继承于Bingo_Action_Abstract,重载在execute函数,自动路由分发到对应的Action类然后执行的派生类中的execute函数。例子:/加载FrontController库 require_once Bingo/Controller/Front.php; /实例化对象,并设置处理Actions的根目录$objFrontController = Bingo_Controller_Front:getInstance(array( actionDir = UI_PATH );/添加静态路由$objFrontController-addStaticRouter(project/test, test1);$objFrontController-addStaticRouter(project/test1,test1); /添加规则路由 $objFrontController-addRouterRule(test/hello, array( rule = array(hello, :fname, pb), regex = array( ) );$objFrontController-dispatch();class test1Action extends Bingo_Action_Abstract public function execute()echo test1n;$arrParams = Bingo_Http_Request:getParams();$intNumber = count($arrParams);$i = 0; while ($i action方式的路由分发在同一个Controller里面可以存在多个Action,设定Controller的目录后,框架根据不同的URL执行对应的Controller中的Action,Controller方式依然是利用Bingo_Controller_Front完成,所不同的是aController:bAction直接对应URL/a/b,因此不用重新写路由规则,实现这个功能依赖于Bingo_Dispatch_Controller类,在分发之前需要注册一个Bingo_Dispatch_Controller的实例,然后调用Bingo_Controller_Front的成员函数registerDispatch注册一个这个实例,实现路由规则下面是一个Controller模式的例子,/加载Controller库 require_once Bingo/Dispatch/Controller.php; /实例化对象,并设置处理Controller的根目录 $objDispatch = new Bingo_Dispatch_Controller(array( controllerDir = ROOT_PATH . DIRECTORY_SEPARATOR . controllers, defaultAction = test, ); /加载FrontController库 require_once Bingo/Controller/Front.php; $objFrontController = Bingo_Controller_Front:getInstance(array( defaultHttpRouter = aa,) ); $objFrontController-registerDispatch($objDispatch); /进行路由分发 $objFrontController-dispatch();class aaController extends Bingo_Action_Controller public function indexAction() echo index:index; public function testAction() echo index:test; 2 Bingo_Http_Request使用Bingo_Http_Request类是用于对URL参数的存储,包括路由参数、GET、POST、SERVER参数等。 * 设置编码方式的字段名称 * */ protected static $_strAutoDetectEncodeName = ie; /* * http请求过来的编码方式 * * var string:utf-8/gbk */ protected static $_strHttpEncode = GBK; /* * 内部代码编码方式 * * var string:utf-8/gbk */ protected static $_strInternalEncode = GBK; /* * 进行编码转换的库,可以选择uconv或者mb_string * 具体参考Bingo_Encode库类 * * var string */ protected static $_strEncodeEngine = uconv; /* * $_GET数组的数据,对字符编码进行了处理 * * var array */ protected static $_arrGet = array(); /* * $_POST数组的数据,对字符编码都进行了处理 * * var array */ protected static $_arrPost = array(); /* * $_COOKIE数组的数据,对字符编码进行了处理 * * var array */ protected static $_arrCookie = array(); /* * $_SERVER数组的数据,对字符编码进行了处理 * * var array */ protected static $_arrServer = array(); /* * http router * * var string */ protected static $_strHttpRouter = ; protected static $_arrHttpRouter = array(); /* * 用于dispatch的router * var unknown_type */ protected static $_strDispatchRouter = ; protected static $_arrDispatchRouter = array(); /* * router中的参数变量 * * var array */ protected static $_arrRouterParams = array(); /* * URL中参数数组 * * var array */ protected static $_arrParams = array(); protected static $_arrParamsFormat = null; protected static $_strMethod = ; private static $_boolHttpEncodeHasDetect = false;/是否进行HTTP编码类型的检查 private static $_boolIsInit = false;/是否已经初始化常用函数:函数名作用getParamByIndex($intIndex, $defaultValue = null)获取URL中第$intIndex的参数getParams()获取所有的参数get($key, $defaultValue=null)获取HTTP请求中的一个数据,包括GET和POST的数据。arrayFilterEmpty($arrInput)过滤空的参数例子:$arrParams = Bingo_Http_Request:getParams();$intNumber = count($arrParams);$i = 0; while ($i -,/分割路由和参数符号sepOfParams = -,/分割参数的符号endOfParams = .,/参数结束符beginRouterIndex = 0,/路由起始编号sepOfRouter = /,/路由分割符);图1.1就是按这种默认配置解析的。若$_arrConfig = array(sepOfRouterAndParams = &, sepOfParams = +, beginRouterIndex=1,endOfParams = .,sepOfRouter = /,);对/aaaa/test&dd-ss-ss+ww解析后,调用的testAction,aaaa被跳过,参数是dd dd-ss-ss和ww。4 Bingo_ Log使用Bingo_ Log主要作用在打log,现在还只是支持文件形式的log,同样,在使用之前需要对起进行配置,配置的数据结构如下,$arrConfig module = array(file = , /log存放的文件level = 0xFF,/log等级 ) module指该日志对应的模块名,存在多个模块只需要添加一个module的设置即可。Log有如下几个等级,const LOG_NONE = 0x00;const LOG_FATAL = 0x01;const LOG_WARNING= 0x02;const LOG_NOTICE= 0x04;const LOG_TRACE= 0x08;const LOG_DEBUG= 0x10;const LOG_ALL= 0xFF;在设置之后,直接调用类函数即可。打日志的函数有:fatal、warning、notice、trace、debug。例子,$arrLogConfig = array( ui = array( file = LOG_PATH . /ui.log, level = 0xFF, ), Log_Test = array( file = LOG_PATH./test.log, level = 0xFF, ), );Bingo_Log:init($arrLogConfig,ui);/初始化Bingo_Log在Action中使用class testAction extends Bingo_Action public function execute() echo test; $arrParams = Bingo_Http_Request:getParams(); Bingo_Log:fatal(ui); Bingo_Log:warning(test,Log_Test); 在ui.log会加入日志NOTICE 1746662525 20100802 21:20:39 testAction.php:8 ui在test.log.wf会加入日志WARNING 1589405422 20100802 20:54:26 testAction.php:13 test5 Bingo_CacheBingo_Cache作用是提供缓存功能,该类提供了5种缓存引擎,分别是apc, eacc, file, source, static,其中file和source文件缓存,apc, eacc是内存缓存,static是用户请求级别的缓存。框架默认的引擎是file。使用Bingo_Cache首先需要建立一个Bingo_Cache的实例,调用Bingo_Cache:factory($strEngine=, $arrOptions=array()函数有两个参数,分别为$strEngine和配置变量$arrOptions,$strEngine是指定缓存引擎,$arrOptions指定了缓存的配置。$arrOptionsdir = ,/缓存目录,文件缓存时有效lifeTime=,/默认缓存有效时间level= ,/目录的级别Serialize= ,/是否序列化encode_head= ,/是否对head部分编码validator= ,/设定验证callback 函数encode= ,/设定编码callback函数需要使用缓存时只需要调用get($strKey)即可,设定缓存时则调用set($strKey, $mixValue, $intLifeTime=NULL)。已一个file缓存作为例子$fileCache = Bingo_Cache:factory(file,array(dir=./data,lifeTime=900);$key = file_key;if ( $rs = $fileCache-get($key) ) echo fileCache get : . var_export($rs,TRUE);else echo filecache not cache!; $fileCache-set($key,array( test=array(1,2,3), t=value, );查看Cache为:1280807798:1:0: a:2 :s:4:test;a:3:i:0;i:1;i:1;i:2;i:2;i:3;s:1:t;s:5:value;6 B
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 仓库顶棚增高施工方案(3篇)
- 灯会美食营销方案(3篇)
- 草坪隔离板施工方案(3篇)
- 诊所营销调研方案(3篇)
- 煤矿-雨季防汛-应急预案(3篇)
- 铝格栅护栏施工方案(3篇)
- 深层搅拌桩复合地基承载特性的多维度解析与工程应用探究
- 深圳市生育保险政策实施:问题剖析与成因探究
- 深入剖析220C协议MAC层算法:原理、性能与创新
- 淮南市保障性住房建设:现状、困境与突破路径研究
- 品牌故事营销与情感共鸣
- 骨髓抑制患者健康教育
- 龙江四大精神解读
- 老年医疗人文关怀服务方案
- 人力资源发展规划模板
- 寻找红色足迹传承红色精神
- 财务管理流程手册及报销审批模板
- 济南市人民医院质子重离子放疗技术基础知识试题
- 教育学原理 第二版 课件 第2、3章 教育与社会发展、教育与人的发展
- 水利安全生产风险管控“六项机制”建设工作报告
- 胡德海教育学原理课件
评论
0/150
提交评论