0

php初心者なのでアドバイスお願いします。ここに私が書いた簡単なクラスがあります。

class Logger
{
    private $handle;

    public function readFile($filename)
    {
        $this->handle = fopen($filename, 'a+');
    }

    public function writeFile($strData)
    {
        fwrite($this->handle, $strData);
    }

    public function __destruct()
    {
        fclose($this->handle);
    }
}

うまくいっています。__destruct についてはよくわかりません。この場合、これは fclose を配置する正しい場所ですか、それとも close メソッドを追加した方がよいでしょうか?

4

2 に答える 2

0

良い!close() をデストラクタに入れるということは、定義された close メソッドを呼び出すのを忘れたとしても、オブジェクトが破棄されるときに常に呼び出されることを意味するので、そこに置くのは論理的です.... close( と同じくらい基本的なものですが) とにかく実行されるため、デストラクタの最適な使用例ではありません。デストラクタの使用は、ファイルに追加の行を書き込むなど、いずれにせよ起こることよりも、明示的な処理が必要な場合に役立ちます。

于 2013-06-13T10:41:10.757 に答える
0

Logger のインスタンスを作成するときにファイルを開かない場合は、デストラクタでファイルを閉じたくない場合があります。

于 2013-06-13T10:44:48.610 に答える