我是Zend Framework的初学者,我发现很难理解他们的文档。 我使用的唯一PHP框架是CodeIgniter。
我习惯使用这个方法:
//load the My_Library class and assign the object to $this->myLibrary property
$this->load->library('my_Library'); //CodeIgniter way
public function index()
{
$this->my_Library->method(); //make use of the methods in the loaded library
}
到目前为止,我正在弄清楚这段代码在zend中是如何工作的,比如在bootstrap类中:
protected function _initSetDoctype()
{
$doctypeHelper = new Zend_View_Helper_Doctype();
$doctypeHelper->doctype('XHTML1_STRICT');
}
在layout.phtml文件中我们可以输入:
<?php echo $this->doctype() ?>
我的问题是:因为我已经实例化了一个新的Zend_View_Helper_Doctype();
ZF如何分配$this->doctype
并将其视为可用?
是否存在某些存储,这些值会更新视图对象?
我正试图找出流程如何在zend中工作,这样我就可以更好地理解如何利用它的资源。对不起我的英语如果很难理解@ _ @ 非常感谢你!
答案 0 :(得分:2)
通常ZF使用Zend_Registry来存储它创建的对象的实例。您提供的具体示例(即_initSetDoctype)有效,因为Zend_View_Helper_Doctype
的构造函数将检查它是否已存储在Zend_Registry中。因此,在您的引导程序中,new Zend_View_Helper_Doctype()
将doctype信息存储在注册表中(因为它是第一次创建),而在layout.phtml中,将检索注册表中的存储值。
其他ZF资源(或对象)(如Zend_View,Zend_Layout)也会存储并通过注册表进行访问。
当然,您也可以将自己的对象(或其他)存储在注册表中。这样,您就可以在ZF应用程序的每个位置访问它们。