zendframework

zendframework框架:

public/index.php 初始化加载各种文件,加载各种plugin(主要用于路由分发的时候调用如routeStartup,其中如授权安全过滤等),初始化helperBroker加载路径(非常核心主要用于在执行controller类时执行predispatch、postDispatch方法,其中包括layout helper、viewRenderer渲染也发生在这个阶段)。初始化Zend_controller_front类front(该类是整体框架类,包含分发等),还有初始化视图渲染类并加入到helperBroker中。初始化路由,加载路由配置,front类加载各种模块,front->dipatch()启动整个框架。

 

Zend_controller_front:整个框架的发起点,初始化的时候会给_plugins变量赋值,这是一个插件加载器,调用dispatch时会设置request、response、获取router,dispatcher,还包括一些参数,

通过_plugins调用routeStartup事件,route路由,根据request对象找出合适的module、controller、action并赋值给request对象,通过_plugins调用routeShutdown事件,调用dispatchLoopStartup事件,进入调用controller/action循环,先将dispatched设置为true,,通过_plugins调用preDispatch事件,通过dispatcher调用dispatch方法进行controller/action逻辑,通过_plugins调用postDispatch事件,判断是否结束dispatched,通过_plugins调用dispatchLoopShutdown事件,最后通过response对象输出内容到终端。

 

Zend_Controller_Dispatcher_Standard:该类是一个调度器,在index.php文件有加载各个模块的时候其实就是调用这个类的addControllerDirectory方法,主要是找到相应的controller,action,通过找到controller类执行Zend_Controller_Action的dispatch方法进行真正的业务逻辑,通过返回的输出内容添加到response对象

 

Zend_Controller_Action:该类就是controller的父类主要负责业务逻辑的执行,初始化时会将helperBroker初始化到变量_helper,并执行init方法。执行action前会先通过_helper执行各个helper的notifyPreDispatch事件,接着执行preDispatch方法,再执行action方法(即我们的业务代码),后执行postDispatch方法,最后执行各个helper的notifyPostDispatch(其中layout的渲染,view的加载渲染)事件。

 

Zend_Controller_Action_Helper:该类主要是充当助手的角色,在controller执行前后插入相应的功能,如layout、viewRenderer等。

 

Zend_Controller_Router_Rewrite:该类即是框架的路由核心类,详情不在细述

 

总结:由index.php到front,在front完成路由到dispatcher完成controller/action寻找到controller类,由该类完成业务逻辑、视图等渲染,最好回归到front输出内容。

posted @ 2016-04-28 20:57  scu_2008_hike  阅读(177)  评论(0编辑  收藏  举报