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


Where are the instantiated objects stored in 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');  
}

在布局中。php文件我们可以放:

<?php echo $this->doctype() ?>

我的问题是:既然我实例化了一个新的Zend_View_Helper_Doctype();ZF是如何分配$this->doctype并使其可见的?是否有某种存储让这些值更新视图对象?

我正试图找出流是如何在zend工作的,所以我可以更好地了解如何利用它的资源。如果我的英语很难理解,请原谅@_@非常感谢!

通常ZF使用Zend_Registry来存储它创建的对象的实例。您提供的具体示例(即_initSetDoctype)工作,因为Zend_View_Helper_Doctype的构造函数将检查它是否已经存储在Zend_Registry中。因此,在引导过程中,new Zend_View_Helper_Doctype()将把doctype信息存储在注册表中(因为它是第一次创建的),然后存储在布局中。将检索注册表中存储的值。

其他ZF资源(或对象),如Zend_View, Zend_Layout,也通过注册表存储和访问。

当然,您也可以在注册表中存储您自己的对象(或其他)。这样,你就可以在ZF应用程序的每个地方访问它们。