Les classes (PHP4)
Introduction
Nous abordons l’une des notions les plus importantes en programmation. Il s’agit en fait de la Programmation Orientée Objets, mieux connue sous l’acronyme de POO Ce style de programmation s’appuie sur le concept d’objets.
Un objet PHP se nomme une classe. Une classe PHP est en fait un ensemble de variables (attributs) et de fonctions (méthodes). Elle regroupe donc des données et du code PHP en une seule structure qui est la classe.
Ce cours ne sera plus à jour à partir de PHP5 puisque cette nouvelle version comportera une toute nouvelle utilisation des classes.
Nous vous proposons ce cours si vous désirez apprendre la Programmation Orientée Objet grâce à PHP5.
Instanciation
Avant de pouvoir exploiter votre classe, vous devrez en faire une instanciation à l’aide du mot-clé New. Une instanciation est en fait une sorte de copie de la structure à l’intérieur d’une variable. En résumé, vous insérer dans une variable votre classe afin de pouvoir accéder à ses méthodes et attributs.
Exemple
<?php // Début d'une classe class uneClasse { // ... } // Instanciation de la classe $objet = new uneClasse(); ?>
Les attributs
Un attribut est, comme mentionné plus haut, une variable à l’intérieur d’un objet. Pour accéder aux attributs d’un objet, il vous faut écrire la variable contenant une instanciation de l’objet, suivi d’une flèche (->); c’est à dire le signe moins (-) et le signe supérieur (>), suivi du nom de l’attribut en question (sans le signe $).
Exemple
<?php // Début d'une classe permettant l'envoi de courriel class courriel { // Déclaration des attributs de la classe var $varExpediteur = 'bob@monsite.com'; var $varDestinataire; var $varSujet; var $varMessage; } // Instanciation de la classe $email = new courriel(); // Attribution de la valeur 'Bonjour!' à l'attribut 'sujet'. $email->varSujet = 'Bonjour!'; // Affichera "bob@monsite.com" echo $email->varExpediteur; ?>
Explications
Comme vous avez pu le remarqué, vous devez déclarer les attributs si vous désirez les conserver et utiliser. L’exemple vous montre aussi qu’il est possible de définir des valeurs par défaut à vos attributs déclarées.
Accéder aux attributs à l’intérieur de la classe
Pour accéder aux attributs à l’intérieur même de la classe, il suffit simplement d’utiliser le mot-clé $this, suivi d’une flèche et du nom de l’attribut. Le mot-clé $this indique que vous faites référence à l’objet en cours, donc la classe.
Les méthodes
Une méthode est, comme mentionné plus haut, un ensemble d’instructions PHP. Il vous permet d’effectuer des opérations précises sur les attributs de votre classe ou exécuter des instructions quelconques.
L’accès aux méthodes (fonctions) d’un objet se fait sensiblement de la même manière que pour les attributs. Il suffit d’écrire le nom de la variable contenant l’objet instancié, suivi d’une flèche et du nom de la méthode. La méthode doit impérativement être suivie des parenthèses, contenant les arguments, s’il y en a.
Les constructeurs
Ce nom peut vous sembler à premier vu un peu barbare. Un constructeur est en fait une méthode qui sera automatiquement appelée lors de l’instanciation de l’objet. Il vous permet d’attribuer des valeurs par défaut, effectuer des connexions, démarrer une session, etc.
Exemple de classe
Voici un exemple de classe permettant l’envoi de courriels.
<?php // Classe permettant l'envoi de courriels class courriel { // Déclaration des attributs de la classe var $VarExpediteur = 'bob@monsite.com'; var $VarDestinataire; var $VarSujet; var $VarMessage; // Constructeur de classe function courriel() { // Initialisation d'une variable $this->VarSujet = '(Aucun sujet)'; } // Méthodes diverses function sujet($sujet) { $this->varSujet = $sujet; } function destinataire($destinataire) { $this->varDestinataire = $destinataire; } function expediteur($expediteur) { $this->varExpediteur = $expediteur; } function message($message) { $this->varMessage = $message; } function envoyer() { // Vérification du succès de l'envoi if( !@mail($this->varDestinataire, // Destinataire $this->varSujet, // Sujet $this->varMessage, // Message 'From: ' . $this->varExpediteur // Autres en-têtes )) { echo 'Erreur lors de l'envoi du courriel!'; } } } // Instanciation de la classe $email = new courriel(); // Attribution des valeurs grâce aux méthodes $email->expediteur('romeo@monsite.com'); $email->destinataire('juliette@sonsite.com'); $email->sujet('Bonjour!'); $email->message('J'ai hâte de te revoir!'); // Envoie du message grâce à la méthode $email->envoyer(); ?>
Explications
Constructeur
Le constructeur Courriel() de la classe permet d’attribuer un sujet par défaut à notre courriel. Bien sûr, vous auriez très bien pu l’attribuer par défaut lors de la déclaration de vos attributs cependant il était bon de voir comment fonctionnait un constructeur. Le constructeur peut évidemment comporter des arguments tout comme une fonction.
Les méthodes
Dans l’exemple ci-dessus, elles permettent d’attribuer des valeurs à nos attributs. Bien que les exemples de méthodes soient très simple voir inutiles, elles sont parfois très utiles lors de la création de gros projets incluant des parseurs, des systèmes de gabarits (templates) et autres gestionnaires fort complexes mais très utiles.