Avatar ·

Traits contre Interfaces en PHP : quand utiliser quoi ?

Bonjour à tous ! Je suis développeur PHP débutant, et je suis constamment confus quant à l'utilisation des traits par rapport aux interfaces. Il semble que les deux aident à 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. Les deux peuvent se déplacer, j'ai donc créé une interface MovableInterface avec la 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 la 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.