PHP OOP - Traits
PHP - Qu'est-ce que les Traits ?
PHP ne prend en charge que l'héritage simple : une classe enfant ne peut hériter que d'un seul parent.
Alors, que faire si une classe a besoin d'hériter de plusieurs comportements ? Les traits en OOP résolvent ce problème.
Les traits sont utilisés pour déclarer des méthodes pouvant être utilisées dans plusieurs classes. Ils peuvent contenir des méthodes et des méthodes abstraites, et ces méthodes peuvent avoir n'importe quel modificateur d'accès (public, privé ou protégé).
Les traits sont déclarés avec le mot-clé trait :
Syntaxe
<?php
trait TraitName {
// some code...
}
?> Pour utiliser un trait dans une classe, utilisez le mot-clé use :
Syntaxe
<?php
class MyClass {
use TraitName;
}
?> Regardons un exemple :
Exemple
<?php
trait message1 {
public function msg1() {
echo "L'OOP est amusant ! ";
}
}
class Welcome {
use message1;
}
$obj = new Welcome();
$obj->msg1();
?> Exemple expliqué
Ici, nous déclarons un trait : message1. Ensuite, nous créons une classe : Welcome. La classe utilise le trait, et toutes les méthodes de ce trait seront disponibles dans la classe.
Si d'autres classes ont besoin d'utiliser la fonction msg1(), il suffit d'utiliser le trait message1 dans ces classes. Cela réduit la duplication de code, car il n'est pas nécessaire de redéclarer la même méthode encore et encore.
PHP - Utilisation de plusieurs Traits
Regardons un autre exemple :
Exemple
<?php
trait message1 {
public function msg1() {
echo "L'OOP est amusant ! ";
}
}
trait message2 {
public function msg2() {
echo "L'OOP réduit la duplication de code !";
}
}
class Welcome {
use message1;
}
class Welcome2 {
use message1, message2;
}
$obj = new Welcome();
$obj->msg1();
echo "<br>";
$obj2 = new Welcome2();
$obj2->msg1();
$obj2->msg2();
?> Exemple expliqué
Ici, nous déclarons deux traits : message1 et message2. Ensuite, nous créons deux classes : Welcome et Welcome2. La première classe (Welcome) utilise le trait message1, et la deuxième classe (Welcome2) utilise à la fois les traits message1 et message2 (les traits multiples sont séparés par une virgule).