我有一个问题。我为我的网站制作了一些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并将'test variable 2'作为输出,如预期的那样。
但是,有没有办法让视图“记住”第一个$ test变量而不必将其添加到setTemplate函数中?
答案 0 :(得分:0)
免责声明:此代码未经过测试
您可以使用变量变量来定义setTemplate方法中的变量,并直接从那里包含视图。
<?php
function setTemplate($view, $data) {
if(is_array($data)){
foreach($data as $var => $val){
$$var = $val;
}
}
include('views/'.$view.'.php');
}
?>