我遇到的问题是我的数据变量突然变为空。 当没有任何内容写入此变量时,它直接发生在IF语句之后。有谁知道这里发生了什么?
public function render()
{
ob_start();
if($this->ajax)
$ext = '.ajax';
else if(file_exists($this->scriptPath.$this->template.'.mst'))
$ext = '.mst';
else
$ext = '.phtml';
#var_dump($this->data); // <-- is filled with many data
if($ext === '.mst'){
var_dump($this->data); // <-- is null
$mustache = new \Mustache_Engine(
array(
'escape' => function($value){return $value;},
'partials_loader' => new \Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/../../../frontendTarget/classes/lib/de/preis/frontend/viewFragments/partials',array('extension' => 'mst'))
)
);
$content = file_get_contents($this->scriptPath.$this->template.$ext);
$content = $mustache->render(($content),$this->data);
echo $content;
} else {
include $this->scriptPath.$this->template.$ext;
}
return ob_get_clean();
}
我在这里有两个var_dumps()。一个在if之前,var填充数据,一个在if之后,数据突然完全消失。
有人可以帮助我吗? 提前致谢
答案 0 :(得分:1)
更多的是学到的教训,而不是答案!
我有一个像这样的问题,这似乎是一个真正的谜,我花了很长时间才弄明白,因为它当时没有任何意义。我的回答是我使用netbeans调试器运行我的代码,之前我已经设置 watch 来清除(unset()
)变量以允许我调试代码段 - 我忘记了删除 watch 以便它在我的调试会话期间执行并null
我的变量
答案 1 :(得分:0)
感谢@Wee Zel的提示。 我仔细检查了我的代码并发现类方法被调用了两次。在第一种情况下,数据是给出的,在第二种情况下则没有。 在我的特定情况下,我有一个MVC模型,首先渲染布局(使用数据)然后渲染视图(没有数据)。我需要视图中的数据而不是布局。所以我只需要将数据传递给正确的图层。