如何将变量传递给PHP中的类中包含的文件?

时间:2009-03-13 13:31:01

标签: php templates variable-assignment

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

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

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

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

echo $this->foo;

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

echo $foo;

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

3 个答案:

答案 0 :(得分:1)

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

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

<p>[foo]</p>

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

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

或者,您可以使用类似Smarty的内容 - 它会为您执行此操作,并且还有许多其他原因也可以使用它。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

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

我不是提取物()的忠实粉丝,但这可以实现您的目标。