Trait
Principe :
Un morceau de code que tu peux inserer dans une classe avec use.
Permet de partager des méthodes entre plusieurs classes tout en ayant accès à $this.
Exemple :
namespace App\Traits;
trait LoggerTrait {
public function log($msg) {
echo "[LOG] " . $msg;
}
}
class MyClass {
use LoggerTrait;
public function doSomething() {
$this->log("Action faite");
}
}
Avantages :
Permet d’utiliser $this pour accéder aux propriétés et méthodes de la classe.
Idéal pour les fonctionnalités “attachées” à une classe mais réutilisables.
Inconvénients :
Ne peut pas être utilisé seul, doit être inséré dans une classe.
Peut créer des conflits si plusieurs traits ont des méthodes avec le même nom.