2011-07-17 62 views
3

我是Zend Framework的初学者,我发现很难理解他们的文档。 我使用的唯一PHP框架是CodeIgniter。zend框架中存储的实例化对象在哪里?

我用这种方法,在利用图书馆:

//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公司,说在引导类:

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

你可以自己回答这个问题,只需启动调试器!投票结束不是一个真正的问题。 – markus

+0

文档没有那么糟糕,一旦你知道框架,哈哈!除了开玩笑,他们在分离ZF作为独立对象和MVC模式方面做得很差。一些例子完全缺乏如何正确地将类实现到MVC中的信息,而其他例子仅以MVC模式工作。 –

回答

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应用程序的每个地方访问它们。

+0

我明白了!我一直在仔细研究这个框架几个小时。与CodeIgniter相比,它非常不同。非常感谢你! – Rei