0

因此,我正在开发自己的小型 MVC 框架作为学习练习。它工作得很好,但我希望能够在没有 $this 的情况下在我的视图文件中引用变量。

因此,例如,我有一个实例化视图对象的控制器对象。从控制器我将变量传递给这样的视图

$this->view->foo = "bar";

然后视图对象包含视图的相关代码(例如:myView.phtml)。所以要访问视图文件中的“foo”,我使用这个

echo $this->foo;

但是我想做的是,我不知道这是否可能,或者我是否遗漏了一些明显的东西,但我想做的是引用这样的变量

echo $foo;

如果没有我发布整个源代码,有人能指出我正确的方向吗?

4

3 回答 3

1

您可以编写一些代码来解析您的 html 视图输入并自动将您的条目从 $foo 或 [foo] 修改为 $this->foo。

所以你可以在你的 html 视图中放这样的东西:

<p>[foo]</p>

然后让一些视图代码解析文件并将 [foo] 的所有实例更改为 $this->foo 的值。所以你的输出变成:

<p>I'm the foo value</p>

或者,您可以使用Smarty之类的东西——它会为您做到这一点,并且还有许多其他使用它的理由。

于 2009-03-13T13:37:33.413 回答
1

你试过提取吗?您必须添加一个方法来将所有变量放入一个数组中。唯一真正的限制是这使变量只读。

于 2009-03-13T13:46:19.697 回答
1

如果您希望视图对象中的每个变量在视图中都可用,您可以将变量添加到视图对象的属性中,该属性是一个数组,然后使用extract()使它们可用:

$this->view->variables['foo'] = 'bar';

extract($this->view->variables); // now $foo = 'bar';

我不是 extract() 的忠实拥护者,但这会完成你正在寻找的东西。

于 2009-03-13T13:48:37.490 回答