php - zend framework 中存储的实例化对象在哪里?

标签 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 并使其在 View 中可用? 这些值更新 View 对象是否存在某种存储?

我正在尝试找出流程在 zend 中的工作方式,以便我可以更好地了解如何利用其资源。如果我的英语很难理解,请原谅我@_@ 非常感谢!

最佳答案

通常 ZF 使用 Zend_Registry 来存储它创建的对象的实例。您提供的特定示例(即 _initSetDoctype)有效,因为 Zend_View_Helper_Doctype 的构造函数将检查它是否已存储在 Zend_Registry 中。因此,在您的 Bootstrap 中,new Zend_View_Helper_Doctype() 将在注册表中存储文档类型信息(因为它是第一次创建),而不是在 layout.phtml 中,注册表中存储的值将被检索。

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

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

关于php - zend framework 中存储的实例化对象在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6722098/

相关文章:

php - 如何使用 Magento/PHP 在另一个图像之上添加图像?

php - Zend Framework如何设置标题

apache - 一台服务器上有多个Zend框架站点

php - 使用 SIM 卡授权.net ARB

php - 这是域对象类吗?

php - 如何从 Select Distinct 中排除一个表

php - 购物车无法正常工作

php - SQL 查询以从逗号分隔的列中检索值

php - 在同一行中获取字段值,其中 MAX(Field) LIMIT 1

php - 在 codeigniter 中创建一个包含 60000 行以上垂直表格的报告。如何分页?