存储在zend框架中的实例化对象在哪里?

时间:2011-07-17 05:29:55

标签: php zend-framework

我是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中工作,这样我就可以更好地理解如何利用它的资源。对不起我的英语如果很难理解@ _ @ 非常感谢你!

1 个答案:

答案 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应用程序的每个位置访问它们。