Профессиональное программирование на PHP

Страница 51 из 591


54 Глава 2 Объектно-ориентированное программирование.

public $id;

public function _construct()

{

$this->id = self::$counter++

}

}

Специальные методы

Классы в РНР резервируют определенные имена методов в качестве особых обратных вызовов для обработки определенных событий. Выше уже рассматривался метод

_construct (), который автоматически вызывается во время инициализации объекта.

В классах также используются другие пять специальных обратных вызовов:_get (),

_set () и_call О — они влияют на способ вызова свойств и методов класса и рассматриваются ниже, а также обратные вызовы_destruct () и_clone ().

_destruct () — обратный вызов для уничтожения объекта. Деструкторы полезны для закрытия созданных классом ресурсов (таких как дескрипторы файлов или подключения к базам данных). В РНР переменные подсчитываются по ссылкам. Если счетчик ссылок на переменную становится равным нулю, то данная переменная удаляется из системы сборщиком мусора. Если эта переменная представляет собой объект, то вызывается метод_dest ruct ().

Деструкторы демонстрируются в следующем примере небольшой оболочки файловых утилит РНР.

class 10 {

public $fh = false;

public function _construct($filename, $flags)

{

$this->fh = fopen($filename, $flags);

}

public function _destruct()

{

if($this->fh) {

fclose($this->fh);

}

}

public function read($length) {

if($this->fh) {

return fread($this->fh, $length);

}

}

/* -.. */

}

В большинстве случаев создавать деструктор необязательно, поскольку РНР очищает ресурсы в конце запроса. Агрессивная очистка ресурсов важна для сценариев с большим временем выполнения и сценариев, которые открывают большое число файлов.



  • Лунка гольф силиконовая.

  Hostland.Ru

 «Бесплатный хостинг Hostland.Su» © 2006