记得前面对Zend_Controller_Front的分析不?里面有registerPlugin的函数,是将插件委托给front的broker来用。有人就会问后面的99是什么意思?是插件的索引顺序,越后面的插件越后执行插件的动作。
下面再看_initHelper:
获取helperClass,这里的helperClass就是Zend_Layout_Controller_Action_Helper_Layout
if (!Zend_Controller_Action_HelperBroker::hasHelper('layout')) {
。。。
Zend_Controller_Action_HelperBroker::getStack()->offsetSet(-90, new $helperClass($this));
}
如果Action_HelperBroker没有layout的helper的话
就执行下面的offsetSet命令。将-90和Zend_Layout_Controller_Action_Helper_Layout实例作为参数传入。
和plugin同样的关系,将Zend_Layout_Controller_Action_Helper_Layout实例作为value存入到this->_helpersByPriority和this->_helpersByNameRef去了
前面的-90是权重,也是要保证这个helper是最后调用(看最后一行是krsort排序)
好了,Layout的构造函数就这样分析结束了。