В теле класса можно определить метод конструктор и метод деструктор. Допускается определение только одного конструктора и деструктора. Имя метода конструктора __constructor, а метода деструктора __destructor.
Конструктор вызывается в момент создания объекта (оператор new). После имени класса в скобках могут быть указаны параметры, которые передаются конструктору. Конструктору будет передано столько параметров, сколько указано в скобках (т.е. конструктор будет вызван в любом случае, даже при несовпадении сигнатуры вызова – это принципиальное отличие, например, от C++).
Деструктор вызывается перед уничтожением объекта, например, при вызове unset или при работе сборщика мусора. У деструктора нет параметров.
Примеры:
<?php
class Fio_Class
{
public $first_name;
public $second_name;
public $family;
public $init;
// конструктор
function __construct( $par1="", $par2="", $par3="" )
{
$this->first_name = $par1;
$this->second_name = $par2;
$this->family = $par3;
$this->init = "Были в конструкторе";
}
// деструктор
function __destruct()
{
echo "Вызвали деструктор!<br />";
}
}
$o1 = new Fio_Class( "Иван", "Иванович", "Иванов" );
// Будет выведено "Иван", поскольку вызван конструктор
echo $o1->first_name;
echo "<br />";
$o2 = new Fio_Class( "Иван", "Иванович" );
// Будет выведено "Иван", поскольку снова вызван конструктор, хотя параметров и меньше
echo $o2->first_name;
echo "<br />";
// И снова будет вызван конструктор!
$o3 = new Fio_Class();
echo $o3->init;
echo "<br />";
unset( $o3 );
echo "После деструктора!<br />";
?>