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 に答える