在这种情况下使用php __destruct方法是否可以

时间:2013-06-13 10:38:03

标签: php oop destructor

我是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方法会更好?

2 个答案:

答案 0 :(得分:0)

嘛!将close()放在析构函数中意味着它会在对象被销毁时始终被调用,即使你忘记调用一个已定义的close方法,所以把它放在那里是合乎逻辑的....尽管像close这样基本的东西(无论如何都会完成,所以它不是析构函数的最佳用例。当需要显式处理时,使用析构函数更有用,而不是无论如何都会发生,例如在文件中写入额外的行。

答案 1 :(得分:0)

如果在创建Logger实例时没有打开文件,则可能不希望在析构函数中关闭文件。