La POO en PHP

2009, Apr 17    

Bonjour à tout le monde.
Ces derniers temps je suis à fond sur l’objet en PHP. En effet, cela a beaucoup d’avantage et surtout cela m’aide à structurer mon code.

Beaucoup de personnes ne savent pas comment débuter. En effet, les livres sur le sujet sont moyens et les tutoriels ne sont pas foison sur le sujet !

Je vous ai donc déniché un tutoriel en 6 parties. Il est écrit par Methylbro, un développeur web toulousain. Voici le lien :

Article POO avec PHP

C’est pas mal écrit et le concept assez bien expliqué. En revanche, dans le dernier billet il nous lâche une classe sans commentaire ni quoi que se soit et je vais donc essayer de vous l’expliquer un peu plus.

Tout d’abord la classe en question :

class Stylo {
 
static private $niveau_encre_max = 100;
static private $niveau_encre_min = 25;
 
private $niveau_encre;
protected $couleur_normale = '#000000';
protected $couleur_fin = '#C0C0C0';
public $statut;
 
private function peutEcrire() {
     if (!$this->statut) {
          $result = false;
     } elseif ($this->niveau_encre<=) {
          $result = false;
     } else {
          $result = true;
     }
  return $result;
}
 
public function __construct() {
      $this->statut = false;
      $this->niveau_encre = self::$niveau_encre_max;
}
 
public function click() {
     if ($this->statut) {
          $this->statut = false;
     } else {
          $this->statut = true;
     }
}
public function ecrire($texte) {
     if ($this->peutEcrire()) {
          echo '< style="color:'.$this-&gt;couleur_normale.'">';
          $nb_caracteres = strlen($texte);
          $texte = htmlentities($texte);
          $texte = str_split($texte);
          $i = ;
 
          while($this-&gt;peutEcrire() &amp;&amp; $i=$nb_caracteres) {
               if ($this-&gt;niveau_encre==self::$niveau_encre_min) {
                    $format = '<span>%s';
               } else {
                    $format = "%s";
               }
     printf($format, $texte[$i]);
     $i++;
     $this-&gt;niveau_encre --;
     }
 
     if ($this-&gt;niveau_encre&lt;=self::$niveau_encre_min) {
          echo "";
     }
 
     echo "
 
n";
     }
}
 
}
</span>

(cliquez sur la flèche vers le bas pour voir le code)

Aïe ça fait mal si vous êtes totalement débutant non ?* Je ne* vais pas reprendre et expliquer tout le code ligne à ligne mais les points qui me semblent flou à la première lecture seulement. Si des questions subsistent n’hésitez pas à me poser des questions via des commentaires ou sur le blog de Methylbro.

1/ La déclaration des variables ne devraient pas vous poser de problème. Ils en parlent un peu dans le commentaires de l’article d’ailleurs.

2/ La fonction peutEcrire() ne devrait pas poser de problème non plus.

3/ Dans le constructeur il fait appel au mot clé « ::self ». C’est très simple en fait. Cela permet d’appeller les propriétés déclarés en statique. Cela peut aussi être utilisé avec une méthode statique.

4/ La fonction *click() *est simple aussi. Elle permet de fermer le stylo s’il est ouvert et inversement.

5/ La fonction ecrire() est compliquée, enfin pas tellement, mais un peu longue au premier abord ^^. Prenez votre courage à deux mains, elle n’est pas dure à comprendre. Elle écrit ce qu’on lui demande selon le niveau d’encre. Quand on arrive à la fin du niveau d’encre la couleur d’écriture change (simulation du manque d’encre) puis n’écris plus quand il n’y a plus d’encres.
N’hésitez pas à copier-coller la classe pour voir ce que cela donne dans votre naviguateur. Ainsi vous comprendrez mieux le fonctionnement de cette classe et vous pourrez donc mieux réutiliser cet outil.

Utilisation de la classe :

// on initialise l'objet
     $monBic = new Stylo();
// ça n'écrira pas, car le stylo est fermé de base
     $monBic->ecrire(‘Essayez d’écrire sans enlever le capuchon…’) ;
// on "ouvre" le stylo"
     $monBic->click() ;
// écriture normale
     $monBic->ecrire(‘Un premier paragraphe.’) ;
// ça va être long, ça va couper avant la fin car plus d'encre.
     $monBic->ecrire(‘Un second paragraphe qui n’iras pas jusque au bout car mon stylo va certainement manquer d’encre.’);

Voilà, j’espère que ce complément d’aide vous aura aider. Accrochez vous à la POO si vous codez en php. Il y’a un petit moment d’adaptation mais le confort arrive très vite croyez moi.

A bientôt.