Dyrk.org - Do You Really Know

Comment utiliser les « traits » en version PHP < 5.4

Publié le 8 octobre 2015 par #Ro0t

Salut à tous,

 

Cet article est technique, et vraiment destiné aux développeurs PHP.

Si vous êtes rendu sur cette article, c’est surement que vous souhaitez réutiliser / partager des méthodes entre divers objets / classe.

 

 

PHP 5.4 a implémenté ce que l’on appel des « traits« , ça permet « grosso merdo », de développer une libraire de fonction, de bout de classe, et de les inclures dans vos objets.

 

trait Rechargeable{


public $energy = 100;


public function recharger(){
$this->energy = 100;
}

}



class Pile extends Battery{

use Rechargeable;

}

 

 

Alors non, il ne seras pas spécialement simple d’inclure des « bouts » de classe dans vos objets.

 

… MAIS … 

Il sera possible en suivant mes explications d’injecter dans vos objets des fonctions, et ainsi de faire de la réutilisation de code !

 

L’idée c’est que depuis une classe, ou une fonction on peut appeler des variables dîtes « GLOBALES« .

Et c’est les globales qui vont nous permettre de mettre en oeuvre : un « pseudo » traits
Ces variables globales sont appelables de partout.

On peut leurs associer n’importe qu’elle type de valeur :
Tableau, Objet, Function, Chaine, Entier, …

 

L’idée c’est de créer une fonction dans une variable globale :

Exemple ci-dessous.

Capture

 

…Voilà …

Avec cette variable, vous êtes en mesure d’exécuter la fonction de cette manière :

$T(« Henri », 45, « Homme »);

 

 

Pour appeler une variable « globale » depuis une fonction on utilise le mot « global » :

Capture

 

Ainsi, on voit ici que j’inclus ma variable globale « T »
On peut également voir sur cette écran comment l’utiliser.

 

 

Alors si l’on applique cette technique à un Objet ça donne ceci :

 

Capture

 

On observe, une classe « Homme » et une classe « Femme« , chacune dispose de la même fonction « présentation ».

On voit que le script fonctionne, sur l’écran de gauche.

 

 Il y a un avantage à cette technique:
C’est que contrairement aux traits, on peut également lui donner un autre nom.
Au cas ou l’on souhaiterais créer une fonction qui prendrait le même nom.