Médiaforma

All posts tagged poo

Il est temps de passer à la pratique. Dans cette partie, vous allez écrire plusieurs scripts pour faire vos armes en POO PHP. Pour cela, nous allons travailler sur une classe spécialisée dans le traitement des chaînes de caractères. Cette classe contiendra plusieurs méthodes permettant de simplifier les manipulations des chaines de caractères.

Pour définir une classe, il suffit d’utiliser le mot class suivi du nom de la classe. Par exemple :

class chainePlus {
  // Une ou plusieurs instructions
}

Pour définir les propriétés de la classe, vous utiliserez le mot-clé :

  • public si la propriété doit être accessible dans la classe, les classes dérivées et les objets ;
  • private si la propriété doit être accessible dans la classe seulement ;
  • protected si la propriété doit être accessible dans la class et ses classes dérivées.

Par exemple :

private $nomProp;

Où nomProm est le nom d’une propriété.

Pour définir des fonctions membres, vous utiliserez cette syntaxe :

public function nom(){
  // Une ou plusieurs instructions
  // $this->nomProp permet d'accéder à la propriété nomProp
}
Remarque
Par convention, il est préconisé de sauvegarder la classe sous le nom nomClasse.class.php (où nomClasse est le nom de la classe). 

 

 


Définissez la classe chainePlus qui contient :

  • Une propriété private nommée chaine ;
  • quatre méthodes de type public nommées gras(), italique(), souligne() et majuscules() qui retournent respectivement la chaîne passée en argument mise en gras, en italique, soulignée et mise en majuscules.

Définissez un script PHP qui crée un objet basé sur la classe chainePlus et qui l’exploite pour obtenir le résultat suivant :

Solution

Faites une pause dans la vidéo et définissez la classe chainePlus et un objet basé sur cette classe. Vous reprendrez la lecture de la vidéo pour prendre connaissance de la solution.

Voici le code de la classe chainePlus :

<?php
  class chainePlus{
    private $chaine = "Programmation orientée objet en PHP";
    public function __construct($laChaine){
      $this -> chaine = $laChaine;
    }
    public function gras(){
      return "<b>".$this->chaine."</b><br>";
    }
    public function italique(){
      return "<i>".$this->chaine."</i><br>";
    }
    public function souligne(){
      return "<u>".$this->chaine."</u><br>";
    }
    public function majuscules(){
      return strtoupper($this->chaine)."<br>";
    }
  }
?>

La première instruction définit la propriété private $chaine et lui affecte la chaîne “Programmation orientée objet en PHP”. Cette variable ne sera accessible que par les méthodes de la classe.

Les instructions suivantes définissent les méthodes gras, italique, souligne et majuscules. Ces quatre méthodes fonctionnent sur le même principe : elles lisent le contenu de la propriété $chaine, lui appliquent un traitement spécifique et retournent le résultat obtenu à l’appelant.

La méthode gras encadre la chaîne par les balises b et /b pour l’afficher en gras et lui ajoute un passage à la ligne avec la balise br. La méthode italique encadre la chaine avec les balises i et /i pour l’afficher en italique et lui ajoute un passage à la ligne. La méthode souligne encadre la chaine avec les balises u et /u pour la souligner et lui ajoute un passage à la ligne. Enfin, la méthode majuscules applique la fonction strtoupper à la chaine pour l’afficher en majuscules et lui ajouter un passage à la ligne.

Voici le code du script objetChainePlus.php, qui crée un objet basé sur la classe chainePlus et qui l’utilise :

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Formulaire d'accès à la page protégée</title>
  </head>
  <body>
    <?php
      include_once("chainePlus.class.php");
      $st = new chainePlus("Programmation orientée objet en PHP");
      echo "Gras : ".$st->gras();
      echo "Italique : ".$st->italique();
      echo "Souligné : ".$st->souligne();
      echo "Majuscules : ".$st->majuscules();
    ?>
  </body>
</html>

Ce script est très simple. Après avoir inclus le code de la classe chainePlus avec l’instruction include_once, une instance de la classe chainePlus est créée avec l’instruction new. L’objet créé a pour nom $st.

Les méthodes Gras, Italique, Souligne et Majuscules de l’objet sont alors invoquées pour afficher les différentes mises en forme de la chaîne.
Exécutons ce code dans WAMP Server. Les quatre mises en forme de la chaîne sont bien affichées.

 


La programmation orientée objet (POO) a essentiellement deux avantages. Elle :

  • facilite l’organisation du code et donc le développement ;
  • permet de définir des modules réutilisables.

La programmation orientée objets repose sur trois notions fondamentales : l’encapsulation, l’héritage et le polymorphisme.

Les classes définissent des structures composées de variables et de fonctions. Pour utiliser les termes propres à la POO, les variables d’une classe sont appelées propriétés. Quant aux fonctions de la classe, elles sont appelées méthodes.

Les instances, c’est-à-dire les utilisations d’un type classe, sont appelées des objets. Les variables et fonctions d’une classe sont appelés composants ou membres de la classe.

Si vous avez du mal à vous y retrouver avec tous ces nouveaux termes, nous allons faire une analogie. Considérez une classe comme une usine qui fabrique des voitures. Les instances de l’usine (la classe) sont des voitures (les objets). La cylindrée, la couleur, le type des pneus, etc. sont des caractéristiques (propriétés) propres à chaque voiture. Selon les caractéristiques des voitures à fabriquer, il faut appliquer différents procédés de fabrication (méthodes).