PHP:变量突然为空

时间:2017-08-23 11:14:04

标签: php

我遇到的问题是我的数据变量突然变为空。 当没有任何内容写入此变量时,它直接发生在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之后,数据突然完全消失。

有人可以帮助我吗? 提前致谢

2 个答案:

答案 0 :(得分:1)

更多的是学到的教训,而不是答案! 我有一个像这样的问题,这似乎是一个真正的谜,我花了很长时间才弄明白,因为它当时没有任何意义。我的回答是我使用netbeans调试器运行我的代码,之前我已经设置 watch 来清除(unset())变量以允许我调试代码段 - 我忘记了删除 watch 以便它在我的调试会话期间执行并null我的变量

答案 1 :(得分:0)

感谢@Wee Zel的提示。 我仔细检查了我的代码并发现类方法被调用了两次。在第一种情况下,数据是给出的,在第二种情况下则没有。 在我的特定情况下,我有一个MVC模型,首先渲染布局(使用数据)然后渲染视图(没有数据)。我需要视图中的数据而不是布局。所以我只需要将数据传递给正确的图层。