Le constructeur est une fonction qui est appelée automatiquement par la classe lors de son instanciation avec l'opérateur new.

class super_classe
{
  function super_classe()
  {
    //bloc d'instructions...
  }
}

class nouvelle_classe extends super_classe
{
  function nouvelle_classe()
  {
    //bloc d'instructions...
  }
}

La fonction constructeur doit posséder un nom identique à celle de la classe.

Une différence importante existe entre la version 3 et 4 du langage PHP quant à la gestion des constructeurs. Avec PHP 3, une fonction définie dans une classe héritée devient un constructeur si son nom est similaire à celle de la nouvelle classe, tandis qu'avec la quatrième version, une fonction constructeur ne peut être définie que dans sa propre classe évitant ainsi toutes ambguités.

class classe_X
{
  function classe_X()
  {
    echo "Bloc d'instructions de la fonction classe_X...";
  }

  function classe_Y()
  {
    echo "Bloc d'instructions de la fonction classe_Y...";
  }
}

class classe_Y extends classe_X
{
  function fonction()
  {
    echo "Bloc d'instructions de la fonction fonction...";
  }
}
/* Quelque soit la version, l'expression retourne :
'Bloc d'instructions de la fonction classe_X...' */
$objet = new classe_X(); /* PHP 3 : l'expression retourne :
'Bloc d'instructions de la fonction classe_Y...' */
/* PHP 4 : l'expression retourne :
'Bloc d'instructions de la fonction classe_X...' */
$snd_objet = new classe_Y();

Avec la version 4, lorsqu'une classe héritant d'une autre est instanciée et si aucun constructeur n'est défini dans cette classe, alors la fonction constructeur sollicitée sera celle de la super-classe, si elle même existe.

Si la classe étendue possède son propre constructeur, alors ce dernier devra appeler le constructeur de la superclasse dans le cas où celui-ci serait nécessaire à l'initialisation de l'objet.

class BaseDonnees {
  protected $id;
  function BaseDonnees(){
    $hote = 'hote.mysql.com';
    $utilisateur = 'laltruiste';
    $motpasse = 'PaSsWORd';
    $this->id = mysql_connect($hote, $utilisateur, $motpasse);
    if(!$this->id & !mysql_select_db("base", $this->id))
      echo "<h3>Une erreur est survenue :</h3>" 
         . "<b><u>Erreur numéro " . mysql_errno() 
         . " :</u> " . mysql_error() . "</b>";
  }
  function extraction($tables, $donnees, $conditions){
    //sélection dans une table
    if($conditions)
      $conditions = " WHERE ".$conditions;
    $requete = "SELECT ".$donnees." FROM ".$tables.$conditions.";";
    $id_res = mysql_query($requete, $this->id);
    if($id_res)
      return $id_res;
    else {
      echo '<h3>Une erreur est survenue :</h3>' 
       . '<b><u>Erreur numéro ' . mysql_errno() 
       . ' :</u> ' . mysql_error() . '</b>'
       . '<p style="color:red">Tentative de connexion 
                                      à la base de données</p>';
      return false;
    }
    mysql_free_result($id_res);
  }
  //...
}

class document extends BaseDonnees {
  private $cle;
  function document($valeur){
    $super->BaseDonnees();
    $id_res = $this->extraction('table', 'champs', 'id_table = '.$valeur);
    $this->cle = mysql_result($id_res, 0, 0);
  }
  //...
}
Sommaire