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


using zend view object as persistent storage

所以我在看这个教程:

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

它说

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

谁能给我解释一下这个"持久存储机制"是怎么工作的?我试着去一个视图文件,设置$this->test = 'something',然后去另一个视图文件并回显$this->test

但是没有显示....

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

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>

如果您没有以正确的顺序看到两个<h3>标题或缺少一个,那么您没有正确调用视图脚本。

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

controller1/actionOne
$this->view->test = 'something';
controller2/actionTwo
$this->view->test .= ' more';
in your viewscript
echo $this->test;  // will print "something more"

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