在__desctruct()函数时写入文件

时间:2012-06-19 23:01:26

标签: php fwrite magic-methods

我发现在PHP类的file_put_contents内编写(fwrite或简单__destruct())是不可能的,如何调用它?全功能:

    function __destruct()
    {
        foreach($this->data as $name=>$value) $$name=$value;    

        if(count($this->modules)>0)
        {   foreach($this->modules as $name=>$value) 
            {   
                ob_start();
                include $value;
                $content=ob_get_contents();
                ob_end_clean();
                $$name = $content;
            }
        }                   
        ob_start();

        include $this->way;

        $content = ob_get_contents();

        ob_end_clean();

        $fp = fopen('cache.txt', 'w+');
        fputs($fp, $content);
        fclose($fp);

        echo $content; 

    }

1 个答案:

答案 0 :(得分:-1)

你可能遇到的问题是你仍在引用你的destruct()中的对象。

根本不应该写入__destruct中的文件。以下示例证明了这一点:

<?php
    class TestDestruct{
       function __construct(){
          $this->f = 'test';
       }

       function __destruct(){
          print 'firing';
          $fp = fopen('test.txt', 'w+');
          fputs($fp, 'test');
          fclose($fp);
      }
    }


$n = new TestDestruct();
empty($n);

请记住,只有在没有对该对象的引用时才会触发destruct。所以,如果你要做的事情 fputs($fp, $this->f)

然后它不起作用。