Avatar ·

Traits contre Interfaces en PHP : quand utiliser quoi ?

Bonjour à tous ! Je suis un développeur PHP débutant, et je suis constamment confus quant au moment d'utiliser les traits et le moment d'utiliser les interfaces. Les deux semblent aider à réutiliser le code, mais je sens que ce sont des choses différentes.

Voici un exemple concret. J'ai une classe Car et une classe Bicycle. Toutes deux peuvent se déplacer, j'ai donc créé une interface MovableInterface avec une méthode move(). Cela fonctionne, mais dans chaque classe je dois écrire ma propre implémentation de la méthode move().

Ensuite, j'ai découvert les traits. J'ai créé un trait EngineTrait avec une méthode startEngine(). Maintenant, je peux l'attacher à la classe Car, mais pas à Bicycle, car un vélo n'a pas de moteur. Et là, je me suis demandé : n'aurait-il pas été préférable de faire de startEngine() une méthode d'interface ? Mais dans ce cas, j'aurais dû l'implémenter aussi dans Bicycle, où elle n'est pas nécessaire.