background image

这个抽象类可以被实现的函数有:

routeStartup: 在路由发送请求前被调用
routeShutdown:在路由完成请求后被调用
dispatchLoopStartup:在进入分发循环(dispatch loop)前被调用
Predispatch:在动作由分发器分发前被调用
postdispatch:在动作由路由器分发后被调用
dispatchLoopShutdown:在进入分发循环(dispatch loop)后被调用
我们还看到了 getRequest, getResponse 两个方法,我们可以通过他们分别从控制器中获取
request 对象和 response 对象
好了,扯远了,回到最开始的代码,Zend_Controller_Front::getInstance 实际上来看做的事
情就是注册了一个 broker 插件放到$front 中。
下面一行代码
Zend_Layout::startMvc(array('layoutPath' => USVN_LAYOUTS_DIR));
看到 Zend/Layout.php 中,startMvc 做了两件事:首先是调用自己的构造函数来实例化自
己(切记带着 initMvc 参数为 true),然后是设置参数。
Zend_Layout 的构造函数比较复杂,就跟到里面看看。首先也是设置传递进来的参数
$options,我们这个例子中是传递进来 Array ( [layoutPath] => 
/var/www/html/usvn/app/layouts )这个 array 作为 options,构造函数就是调用$this-
>setOptions($options);
这个 setOptions 做的事是根据 array 的每个 key,调用$this->set$key($val);也就是说,以上
面的例子来说,setOptions 调用了 setLayoutPath("/var/www/html/usvn/app/layouts")
顺藤摸瓜,setLayoutPath 的功能是设置自己类的 this->_layout
为"/var/www/html/usvn/app/layouts"  

, 然后设置_enable 为 true;这两个属性记住,以后会

有使用的。
回退到 Zend_Layout 的构造函数,初始化 options 之后是调用了_initVarContainer();