在zf2视图中使用$ this表示变量

时间:2016-02-11 17:52:25

标签: php zend-framework2

显然,将变量从控制器传递到ZF2中的视图的正确方法是:

return new ViewModel(array(
        'myVar' => "Hello World",
    ));

以及显示变量的方式是:

echo $this->myVar;

但是,我发现这也有效:

echo $myVar;

如果似乎不需要使用$this->,是否有任何理由?

1 个答案:

答案 0 :(得分:2)

请注意"中的$this"上下文保持其预期目的。
在视图文件中将始终指示当前视图对象(视图模型) 虽然您仍然可以通过以下方式访问视图变量:echo $myVar; BUT ,这样的变量可以很容易地在视图内容中被覆盖,因此成为一个本地的'具有自定义值的变量。
这是一些实际的演示: 我们分别有IndexController.php和视图文件index.phtml

<强> IndexController.php

class General_IndexController extends Zend_Controller_Action {

    ...
    public function indexAction() {
        ...
        $this->view->myVar = "value from contr-er";

    }
    ...

}

<强> index.phtml

<?php $myVar = "myvar in view"; ?>
<?php var_dump($myVar); ?>
<?php var_dump($this->myVar); ?>
.... // html markup

输出将是:

string 'myvar in view' (length=13)
string 'value from contr-er' (length=19)

虽然$this->myVar也可以在视图中被覆盖,但是$this作为视图对象可以让您与从控制器传递的所有变量(值)保持清晰直接的关系。