0

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

4

1 回答 1

0

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

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

<?php
function setTemplate($view, $data) {
  if(is_array($data)){
    foreach($data as $var => $val){
      $$var = $val;
    }
  }
  include('views/'.$view.'.php');
}
?>
于 2013-02-11T20:53:36.537 回答