То есть, если есть, например, класс Человек, а его подвиды (расы) - экземпляры, то в конструкторе можно прописать, что Человек имеет мозг, руки, ноги и так далее. При создании даже пустого экземпляра, к примеру, Китаец в нём автоматически будут руки, ноги, мозг и прочее? Так что ли?
Допустим есть класс "человек". Создаем 2 экземпляра, одного китайца, а второго русского.
PHP:
class man{
public $lang; //язык
public $color; //цвет
public $religion; //религия
function __constructor($nation)
//вытащить из БД описание национальных признаков
$info=какаято_функция_вытягивающая информацию_о_национальных _чертах(nation);
$this->lang=$info['lang'];
$this->color=$info['color'];
$this->religion=$info['religion'] ;
}
//Теперь создаем 2-х человек. Конструктору скармливаем
//национальность, а он автоматически заполняет особенности (цвет кожи. язык, религию).
man1= new man("Chinese");
man2= new man("Russian");
//теперь когда нам понадобится инaормация о человеке 1-м человеке,например его язык, мы просто используем
echo $man1->lang;
на выходе получим слово "russian". Как видишь контсруктор сам инициализировал все свойства, взависимости от входного параметра. Если бы в приведенном примере не было конструктора, то нам пришлось бы все равно после каждого создания экземпляра человека заполнять его национальность, религию, цвет кожи, поскольку человек был бы не полноценным. Ту задачу, которую необходимо выполнять с объектом всегда и распологают в конструкторе.
Раз уж ззашел разговор о конструкторе, есть еще антогонист ему -деструктор
PHP:
function __destructor(){
//код
}
Деструктор вызывается тоже
всегда. но при уничтожении объекта. Даже если объект не уничтожается явно, деструктор гарантированно вызывается по завершении работы сценария. Цель его - почистить за экземпляром чегото, м.б сохранить какуюто информацию. Пример с нашими человечками:
предположим что в процессе жизни (в процессе работы сценария) наш человечек man1 принял ислам man1->religion="Islam", поскольку православных начали щемить. Дальше из-за глобального потепления русский стал похож на негра: man1->color="brown"; Эту информацию о нем нужно сохранить. Тогда в деструктор просто добавляется функция сохранения этой информации (например в БД);
Можно деструктор было и не привлекать, но тут как в случае с конструктором пришлось бы каждый раз вызывать функцию "сохранить параметры". Т.е. в эти выбрасывается тот код, который всегда должен выполниться с объектом.