создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

PHP. Руководство по PHP. 2005

Конструкторы и деструкторыПред.Глава 19. Классы и объекты (PHP 5)След.

Конструкторы и деструкторы

Constructor

PHP 5 позволяет объявлять методы-конструкторы. Классы, в которых объявлен метод-констуктор, будут вызывать этот метод при каждом создании нового объекта, так что это может оказаться полезным, чтобы, например, инициализировать какое-либо состояние объекта перед его использованием.

Замечание: Конструкторы в классах-родителях не вызываются автоматически. Чтобы вызвать конструктор, объявленный в родительском классе, следует обратиться к методу parent::__construct().

Пример 19-6. Использование унифицированных конструкторов
<?php

class BaseClass {

    function __construct() {

        print "Конструктор класса BaseClass\n";

    }

}

class SubClass extends BaseClass {

    function __construct() {

        parent::__construct();

        print "Конструктор класса SubClass\n";

    }

}

$obj = new BaseClass();

$obj = new SubClass();

?>

Если PHP 5 не может обнаружить объявленный метод __construct(), вызов конструктора произойдет по прежней схеме, через обращение к методу, имя которого соответствует имени класса. Может возникнуть только одна проблема совместимости старого кода, если в нём присутствуют классы с методами __construct().

Деструкторы

PHP 5 предоставляет концепцию деструкторов, сходную с теми, что применяются в других ОО языках, таких, как Java: когда освобождается последняя ссылка на объект, перед высвобождением памяти, занимаемой этим объектом, вызывается метод __destruct(), не принимающий параметров.

Пример 19-7. Пример использования деструктора
<?php

class MyDestructableClass {

    function __construct() {

        print "Конструктор\n";

        $this->name = "MyDestructableClass";

    }

    function __destruct() {

        print "Уничтожается " . $this->name . "\n";

    }

}

$obj = new MyDestructableClass();

?>

Как и в случае с конструкторами, деструкторы, объявленные в родительском классе, не будут вызваны автоматически. Для вызова деструктора, объявленном в классе-родителе, следует обратиться к методу parent::__destruct().

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting