欢迎来到天天文库
浏览记录
ID:38120777
大小:97.88 KB
页数:11页
时间:2019-06-06
《Bingo2使用说明》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Bingo2使用说明1Bingo2路由分发Bingo2的路由分发主要分成三步,获取路由Key,路由Key映射到DispatchKey,和最后的路由分发三个部分,流程如图1.1所示,而且每一步都可以进行自定义。图1.1路由分发流程图路由分发的实现主要由Bingo_Controller_Front完成,首先需要得到一个该类的实例化对象并且设置参数。参数列表如下:@paramarray$arrConfig{httpEncode:string输入参数的编码类型internalEncode:string内部采用的编码类型,通常是gbkautoDetectEncod
2、eName:string自动获取编码类型的key。如果设置了httpEncode,则不需要设置该变量*encode:object,subclassofBingo_Encode_Abstract编码转化的对象,默认是采用uconv,如果采用mbString,需要指定httpRouter:获取router的对象,需要是Bingo_Http_Router_Abstract的子类。默认采用Bingo_Http_Router_Pathinfo如果采用Bingo_Http_Router_Pathinfo,那么还有几个参数{sepOfRouterAndParams:s
3、epOfParams:endOfParams:beginRouterIndex:sepOfRouter:defaultHttpRouter:usePathinfo:}defaultRouter:如果dispatchRouter为空,则采用该默认的Router。notFoundRouter:如果所有的dispatcher都dispatch失败后,将采用该router重新进行分发。如果采用默认的自动分发,则还有以下的参数actionDir:actions的目录actionFileSuffix:文件后缀,默认是.phpactionClassNameSuffix
4、:类名的后缀,默认是Action}得到实例化的Bingo_Controller_Front方法如下:$objFrontController=Bingo_Controller_Front::getInstance(array('actionDir'=>“/home/project/actions”,));此例中Action将分发到/home/project/actions目录中。在设置完静态路由和规则路由后,调用dispatch()执行分发操作。后续所提到的$objFrontController都表示Bingo_Controller_Front的实例。1.
5、1获取路由Key路由分发的第一步是路由Key的拆分,即对请求的URL分析,得到分发所需要的参数。这部分主要是由Bingo_Htp_Router_Pathinfo完成的,拆分的结果存在Bingo_Http_Request中。默认拆分是用符号“?”分割QueryString,用符号“-”分割Params。图1.2是默认的拆分方法。图1.2Bingo2的URL规范示意图1.1路由Key映射到DispatchKey路由分发的第二部是将上一步的拆分Key和实际分发Key做映射。映射主要分为两种,静态路由和规则路由。1.1.1静态路由设置静态路由设置是一个Key=>
6、Value的设置,分发函数会把符合的Key分发到Value的Action中。下面是设置静态路由的例子。$objFrontController->addStaticRouter('prjoect/test','test');1.1.2规则路由设置规则路由是将复合规则描述的所有url都分发到指定的Action上,主要有两个参数,第一个参数是需要分发的目标Action,第二个参数是一个Array,其中也包含两个参数,如下:@paramarray$rule{rule:array//路由规则regex:array//Router参数的正则}下面是一个规则路由的例子
7、,$objFrontController->addRouterRule('test/hello',array('rule'=>array('hello',':fname','pb'),'regex'=>array(':fname'=>'[0-9]')));这个路由规则将匹配hello/[:fname]/pb的url,且[:fname]为数字。1.2路由分发比较常用的是自动路由和Controller路由。1.2.1自动路由分发自动路由分发是在路由规则的基础上,在AcitonDir文件夹中找到对应的Action类,Bingo2的Action类都是继承于Bin
8、go_Action_Abstract,重载在execute函数,自动路由分发到对
此文档下载收益归作者所有