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