如何在视图中使用变量而不指定它们

时间:2013-02-11 20:38:20

标签: php model-view-controller view

我有一个问题。我为我的网站制作了一些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函数中?

1 个答案:

答案 0 :(得分:0)

免责声明:此代码未经过测试

您可以使用变量变量来定义setTemplate方法中的变量,并直接从那里包含视图。

<?php
function setTemplate($view, $data) {
  if(is_array($data)){
    foreach($data as $var => $val){
      $$var = $val;
    }
  }
  include('views/'.$view.'.php');
}
?>