Constructeur

Le constructeur est la fonction qui est appel�e automatiquement par la classe lorsque vous cr�ez une nouvelle instance d'une classe � l'aide de l'op�rateur new. La fonction constructeur a le m�me nom que la classe. Une fonction devient le constructeur si elle porte le m�me nom que la classe. Si une classe n'a pas de constructeur, le constructeur de la classe de base sera appel�, s'il existe.

<?php
class Auto_Panier extends Panier {
    function 
Auto_Panier () {
        
$this->add_item ("10"1);
    }
}
?>

L'exemple ci-dessus d�finit la classe Auto_Panier qui h�rite de la classe Panier et d�finit le constructeur de la classe. Ce dernier initialise le panier avec 1 article de type num�ro 10 d�s que l'instruction new est appel�e. La fonction constructeur peut prendre ou non des param�tres optionnels, ce qui la rend beaucoup plus pratique. Pour pouvoir utiliser cette classe sans param�tre, tous les param�tres du constructeurs devraient �tre optionnels, en fournissant une valeur par d�faut, comme ci-dessous.

<?php
class Constructor_Cart extends Cart {
    function 
Constructor_Cart($item "10"$num 1) {
        
$this->add_item ($item$num);
    }
}
 
// Cr�ation du Panier
$default_cart = new Constructor_Cart;
 
// Cr�ation d'un vrai Panier
$different_cart = new Constructor_Cart("20"17);
?>

Vous pouvez �galement utiliser l'op�rateur @ pour emp�cher les erreurs survenant dans le constructeur de s'afficher, e.g. @new.

<?php
class A
{
    function 
A()
    {
        echo 
"Je suis le constructeur de A.<br />\n";
    }

    function 
B() 
    {
        echo 
"Je suis une fonction standard appel�e B dans la classe A.<br />\n";
        echo 
"Je ne suis pas le constructeur de A.<br />\n";
    }
}

class 
extends A
{
}

// Cette syntaxe va appeler B() comme constructeur.
$b = new B;
?>

La fonction B() de la classe A va soudainement devenir le constructeur de la classe B, bien qu'il n'ait pas �t� pr�vu pour. PHP 4 ne se soucie gu�re si la fonction est d�finie dans la classe B ou si elle a �t� h�rit�e.

Attention

PHP n'appelle pas automatiquement le constructeur de la classe sup�rieure depuis le constructeur de la classe d�riv�e. Il est de votre responsabilit� de propager l'appel des constructeurs.

Les destructeurs sont des fonctions qui sont appel�es lorsqu'un objet est d�truit, soit avec la fonction unset() soit par simple sortie d'une fonction (cas des variables locales). Il n'y a pas de destructeurs en PHP. Vous devez utiliser la fonction register_shutdown_function() � la place pour simuler la plupart des effets des destructeurs.