使用 zend 视图对象作为持久存储

Posted

技术标签:

【中文标题】使用 zend 视图对象作为持久存储【英文标题】:using zend view object as persistent storage 【发布时间】:2011-08-14 03:44:39 【问题描述】:

所以我在看这个教程:

http://devzone.zend.com/article/3412

它说

“在 Zend Framework 的 MVC 中,大多数情况下占位符没有意义;由于默认情况下在所有控制器和布局之间使用相同的视图对象,您可以简单地将视图变量用作持久存储机制。”

有人可以向我解释一下这种“持久存储机制”的工作原理吗?我试着去一个视图文件,设置 $this->test = 'something',然后去另一个视图文件并回显 $this->test

但是什么都没发生......

【问题讨论】:

你能说得更清楚些,或者显示一些代码吗?这是针对一个视图脚本包含另一个视图脚本的单个请求吗? 【参考方案1】:

如果您在同一个请求中调用视图脚本并且顺序正确,那么您的测试将起作用。

view-script1.phtml
<h3>Test one</h3>
<p>nothing</p><?php $this->test = 'something'; ?>

view-script2.phtml
<h3>Test two</h3>
<p><?php echo $this->test; ?></p>

如果您没有以正确的顺序看到两个 &lt;h3&gt; 标题或缺少一个,则说明您没有正确调用视图脚本。

此外,持久存储的最佳示例是控制器。如果您转发到其他操作甚至控制器,您可以通过它们传递数据

controller1/actionOne
$this->view->test = 'something';

controller2/actionTwo
$this->view->test .= ' more';

in your viewscript
echo $this->test;  // will print "something more"

【讨论】:

【参考方案2】:

持久性存储只不过是 Zend_View_Helper_Placeholder_Registry 类使用的静态函数注册表,因为它是一个静态函数,它可以与许多对象共享,因此在视图助手的上下文中称为持久性,这是这个占位符的子类。

【讨论】:

以上是关于使用 zend 视图对象作为持久存储的主要内容,如果未能解决你的问题,请参考以下文章

使用持久存储协调员?

数据持久化方案解析(八) —— UIDocument的数据存储(一)

Python3标准库:shelve对象的持久存储

如何在 Android 应用的 web 视图中使用持久存储

很多人都在使用对象存储OSS,那么他到底有哪些优势呢?

很多人都在使用对象存储OSS,那么他到底有哪些优势呢?