Как и конструктор, PHP позволяет вам определять деструктор для класса, используя специальный метод __destruct(), например:
<?php
class className
{
public function __destruct()
{
//...
}
}
В отличие от конструктора деструктор не принимает никаких аргументов. Деструктор вызывается автоматически перед удалением объекта. Это происходит, когда объект не имеет ссылки или когда сценарий завершается.
Следующий простой класс FileUtil демонстрирует, как использовать деструктор для закрытия дескриптора файла:
<?php
class File
{
private $handle;
private $filename;
public function __construct($filename, $mode = 'r')
{
$this->filename = $filename;
$this->handle = fopen($filename, $mode);
}
public function __destruct()
{
// close the filehandle
if ($this->handle) {
fclose($this->handle);
}
}
public function read()
{
// read the file contents
return fread($this->handle, filesize($this->filename));
}
}
$f = new File('./test.txt');
echo $f->read();
Как это работает: