ZenFramework中的View对象初始化流程

默认情况下没有使用layout,发现在Bootstarp中始终无法拿到View对象,使用GetResoure的方法,这个方法也是网上一般搜索到的方法,但是我这里打印就是null,今天装好Debug环境,仔细跟踪了下,上截图说事吧:



1:首先从index.php进入,调用Application的run方法

2:application其实是调用的Bootstarp的run方法

3:Front控制器进入dispatch(之前做了很多工作,比如加载插件助手和经纪人助手,这块需要大家仔细了解下)

4:进入分发,这个才是重头戏,之前根据路由找到了对应的路径,然后分发器接着提取到模块名,类名,方法名等(也可能是通过配置文件提取的,也可能额根据路由提取的)

5:找到对应的类之后,要实例化这个类,执行对应的action了。在实例化这个类的时候调用构造函数

6:构造函数中有对经纪人助手的实例化(ViewRender是注册在经纪人助手中的)

7:对经纪人助手实例化,调用构造函数

8:构造函数中调用Viewrender的init方法,init方法内调用initView方法。。这个时候算是实例化了view对象。。

9:接着调用action的自己定义的init方法(这个没截图进去)

10:所以在action的init中是可以拿到view对象的,通过$this->view即可


11:由于这个地方没看到bootstrat的一系列_init的调用所以暂时看不出来时候可以在bootstrat的_initxx方法中提取到这个对象。。



PS1:

下午继续看源代码,在Action的基类中也有对view的初始化,通过对这个方法的引用我看到,是在Action的render中调用了这个方法。这个初始化时直接new出来的Zend_View。传入的参数是baseUrl。这就和上面说的也不冲突,上面的实例化是在经理人助手中,我们知道我们可以显式的不让经纪人助手来拿到ViewRender的,这个也就是干这个用的吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值