PHP POO - Caractéristiques
PHP - Qu'est-ce qu'un trait ?
PHP ne supporte que l'héritage unique : une classe enfant ne peut hériter que d'un seul parent.
Alors, que se passe-t-il si une classe doit hériter de plusieurs comportements ? Les traits POO résolvent ce problème.
Les traits sont utilisés pour déclarer des méthodes qui peuvent être utilisées dans plusieurs classes. Les traits peuvent avoir des méthodes et des méthodes abstraites qui peuvent être utilisées dans plusieurs classes, et les 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- trait
clé :
Syntaxe
<?php
trait TraitName {
// some code...
}
?>
Pour utiliser un trait dans une classe, utilisez le mot-
use
clé :
Syntaxe
<?php
class MyClass {
use TraitName;
}
?>
Regardons un exemple :
Exemple
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
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 du trait seront disponibles dans la classe.
Si d'autres classes ont besoin d'utiliser la fonction msg1(), utilisez simplement 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
Prenons un autre exemple :
Exemple
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
trait message2 {
public function msg2()
{
echo "OOP reduces code duplication!";
}
}
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 (plusieurs traits sont séparés par une virgule).