Welcome to php club

Единое имя конструкторов

Краткое описание

В PHP5, также как и в PHP4, есть возможность указать метод-конструктор, который вызывается при создании объекта и отвечает за инициализацию, которая может понадобиться перед тем, как объект может быть использован. Однако в PHP4 метод конструктора должен называться, так же как и класс, что доставляет проблемы при перемещении класса в большой их иерархии. Например, при смене предка меняется, как сам конструктор, так и код в потомках. PHP5 вводит стандартный способ определения конструкторов, используя метод с именем __construct. Также как и в PHP4 конструктор предка не вызывается автоматически и его нужно вызывать самостоятельно.
Пример:

<?php
class BaseClass {
    function
__construct() {
        echo
"В конструкторе класса BaseClass\n";
    }
}

class
SubClass extends BaseClass {
    function
__construct() {
        
parent::__construct();
        echo
"В конструкторе класса SubClass\n";
    }
}

$obj = new BaseClass();
$obj = new SubClass();
?>

Результат:

Проблемы с обратной совместимостью

Если PHP5 не может найти метод __construct(), то, для обратной совместимости, будет использоваться старый конструктор с именем равным имени класса. Старый код с классами без метода __construct() должен работать без изменений.

Дополнительные сведения

Описание в оригинальной документации: http://www.php.net/oop5.decon


 
Комментариев нет. [Показать комментарии/форму]