【发布时间】:2013-02-11 20:38:19
【问题描述】:
我有一个问题。我为我的网站做了一些 mvc'ish 结构。 我希望能够在视图中使用我的变量而不分配它们。
让我通过一个例子来解释一下,这是我的控制器的一小部分:
class members extends controller{
public function _construct()
{
parent::__construct();
}
public function index()
{
$test = 'test variable';
$data['test2'] = 'test variable 2';
view::setTemplate('header');
view::setTemplate('homepage', $data);
view::setTemplate('footer');
}
}
在我的视图类的 setTemplate() 函数中,我使用extract($data),然后包含视图文件。这样我就可以回显 $test2 并按预期将“测试变量 2”作为输出。
但是,有没有办法让视图“记住”第一个 $test 变量而无需将其添加到 setTemplate 函数?
【问题讨论】:
-
我想这里要问的问题是:为什么?请记住,编写明确的、自记录的代码是可维护性的重中之重。
-
$this->test = 'test variable';所以它成为对象的一个属性。 -
extract()是有史以来最糟糕的 PHP 函数之一。感谢您让需要调试代码的未来开发人员的生活陷入困境。 -
为什么提取物这么差?
-
因为它使调试成为一场噩梦——应该声明变量并将其公开给脚本。提取就像 - “嘿,相信我,有一些传入的变量......下面引用的那些可能或可能没有在我正在提取的废话数组中定义,但是......那是你的问题不是我的”
标签: php model-view-controller view