当前位置: 首页 > 后端技术 > PHP

Phalcon2.0.9路由处理源码解析

时间:2023-03-29 13:43:29 PHP

router()和route()router()Phalcon的路由处理器,使用该类解析路由。route()Phalcon的路由类,主要作为路由的实现类。在调用router()->add()方法添加路由时,主要是实例化一个route()类。router()初始化1.初始化路由时,可以指定是否默认添加/:controller/:action和/:controller/:action/:params两条路由。2.精益定制解析commandspace、controller、action,设置router的_defaultNamespce、_defaultController、_defaultAction属性。3、设置路由处理的_params、defaultParams、_routes属性(属性功能见下文)。router()->handle(stringuri=null)1.判断是否传入uri参数,如果没有,从$_GET['URL']或$_SERVER['REQUEST_URI']获取;如果传入,则处理传入的uri。2.处理路由右侧更多的`/`字符。3.处理router:beforeCheckRoutes事件。4、循环遍历所有已经注入的路由(`forrouteinreversethis->_routes`),然后通过几个aspect来匹配当前需要处理的路由。获取路由的请求方法,判断当前请求的路由是否匹配路由的请求方法,如果不匹配则继续。获取主机名hostName(Phalcon路由支持受限主机名),判断当前请求的路由是否为当前受限主机名,如果不是则继续。触发事件路由器:beforeCheckRoute。在路由匹配前触发回调函数(Phalcon支持在路由匹配前调用回调)。如果路由找到匹配项,匹配默认路由,Phalcon支持默认路由。5.如果通过上面的循环遍历没有找到路由,就去defaultController等等。6.如果通过上面的循环遍历找到路由,则从路由中解析出namespace、controller等。总结总的来说,Phalcon支持多种路由模式,包括路由组、模块化处理、正则路由、回调处理等,可以通过源码和文档结合学习。