1

我发现在 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; 

    }
4

1 回答 1

-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)

那么它就行不通了。

于 2012-06-19T23:14:38.250 回答