Les classes PHP4, exemple [PHAB]
Par Damien, samedi 5 mars 2005 à 13:09 :: PHP :: #14 :: rss
Au début, on écrit souvent nos programmes PHP de façon linéaire, en rendant ainsi la maintenance difficile.
Il vaut mieux faire en sorte de couper le code en fonctions, ou en différents petits scripts. Mais toute modification d'une fonction demande alors de la retrouver, ce qui peut être dans certain cas épique ! Alors pour les personnes qui ont des problèmes de rangement, on a créé les classes, qui permettent de mieux organiser nos applications.
1- Avant propos
Ce tutorial est en fait un exemple détaillé, qui permet d'illustrer le fonctionnement d'une classe PHP4 (ce tutorial ne traite pas des classes PHP5). Il nécessite quand même d'en savoir un minimum sur les classes d'objets, je vous conseille donc de lire le tutorial Introduction aux classes d'objet avant.
Pour comprendre le rôle d'une classe, on va voir une relation avec le monde que nous connaissons tous.
Un pingouin (juste par hasard) n'est pas un animal jeté comme ça sur terre, il a suivi une évolution et hérité des caractéristiques de sa famille (les oiseaux), tout en possédant ses propres caractéristiques (il nage sous l'eau).
Ce qui donne : Famille (classe) Oiseau -> Famille (classe) Pingouin
Quel est le rapport avec la programmation ? A première vue aucun, mais nous allons utiliser un exemple d'évolution analogue, avec des véhicules.
NB : Vous pourrez télécharger le code source de l'exemple complet en fin de tutorial
2- Définition du véhicule
Définition d'un véhicule :
<?php class vehicule { var $roues; var $passagers; var $classname = 'vehicule'; var $nom = ''; function vehicule($roues, $passagers) { $this->roues = $roues; $this->passagers = $passagers; } function init_nom($nom_type) { $this->nom = $nom_type; } function jesuis() { if ($this->nom) echo '</p>'; } } ?>
La fonction véhicule est appelée automatiquement lors de la création de l'objet (constructeur, même nom que la classe) avec comme argument le nombre de roues et le nombre de passagers. La méthode jesuis() affiche les caractéristiques de l'objet.
3- Héritage
Voici la première partie intéressante des classes : l'héritage. On utilise le mot clé extends pour faire hériter un objet.
<?php // inclusion du fichier contenant la définition de ma première classe require 'ma_classe_vehicule.php'; // classe velo class velo extends vehicule { var $classname = "velo"; // constucteur function velo() { $this->vehicule(2, 1); } } ?>
L’objet vélo est un véhicule de 2 roues avec 1 passager.
4- Surcharge
On reprend le même principe pour l'objet des véhicules motorisés (mvehicule)
<?php // inclusion du fichier contenant la définition de ma première classe require 'ma_classe_vehicule.php'; // classe vehicule motorise class mvehicule extends vehicule { var $classname = "motorisé"; var $moteur; function init_moteur($cylindre) { $this->moteur = $cylindre; } function jesuis() { vehicule::jesuis(); // appel à la fonction de la classe vehicule } } ?>
Là par contre, on a surchargé la fonction jesuis pour ajouter l'affichage de la nouvelle caractéristique de la classe, le moteur.
5- Conclusion
Pour compléter l'exemple, on crée deux nouvelles classes (voiture et moto) à partir de la classe véhicule motorisé. Puis on initialise les classes, car il faut bien les utiliser !
Exemple complet :
<?php class vehicule { var $roues; var $passagers; var $classname = 'vehicule'; var $nom = ''; function vehicule($roues, $passagers) { $this->roues = $roues; $this->passagers = $passagers; } function init_nom($nom_type) { $this->nom = $nom_type; } function jesuis() { if ($this->nom) echo '</p>'; } } // classe velo class velo extends vehicule { var $classname = "velo"; // constucteur function velo() { $this->vehicule(2, 1); } } // classe vehicule motorise class mvehicule extends vehicule { var $classname="motorisé"; var $moteur; function init_moteur($cylindre) { $this->moteur = $cylindre; } function jesuis() { vehicule::jesuis(); // appel à la fonction de la classe vehicule } } // classe voiture class voiture extends mvehicule { var $classname= "voiture"; function voiture() { $this->vehicule(4, 5); } } // classe moto class moto extends mvehicule { var $classname= "moto"; function moto() { $this->vehicule(2, 2); } } // création des objets $bmx = new velo; $cb = new moto; $twingo = new voiture; // on ajoute un nom et à l'objet $twingo->init_nom("TWINGO"); $twingo->init_moteur(1600); $cb->init_nom("CB 500"); $cb->init_moteur(500); // corps du programme echo '<h2>VELO</h2>'; $bmx->jesuis(); echo '<h2>TWINGO</h2>'; $twingo->jesuis(); echo '<h2>MOTO</h2>'; $cb->jesuis(); ?>
Résultat :
Télécharger le code source de l'exemple en archive zip.
Tutorial écrit par PHAB

Commentaires
1. Le mardi 4 octobre 2005 à 13:23, par Vianney
2. Le vendredi 14 octobre 2005 à 12:43, par pierre
3. Le jeudi 17 novembre 2005 à 14:16, par jopopmk
4. Le mardi 16 mai 2006 à 10:03, par coin
5. Le vendredi 30 juin 2006 à 18:40, par chatton
6. Le mardi 1 août 2006 à 12:45, par Yop
7. Le vendredi 1 septembre 2006 à 23:35, par Feyd
8. Le dimanche 12 novembre 2006 à 21:41, par Captain Adok
9. Le lundi 18 décembre 2006 à 16:47, par yopsolo
10. Le lundi 9 juillet 2007 à 16:33, par popof
11. Le jeudi 18 octobre 2007 à 19:07, par Eziras
12. Le vendredi 25 janvier 2008 à 16:44, par Roudi
13. Le dimanche 6 avril 2008 à 13:55, par Marco
14. Le dimanche 6 avril 2008 à 13:58, par Elly
Ajouter un commentaire