Traits contre Interfaces en PHP : quand utiliser quoi ?
Bonjour tout le monde ! Je suis un développeur PHP débutant, et je suis constamment confus quant à savoir quand utiliser les traits et quand utiliser les interfaces. J'ai l'impression que les deux aident à réutiliser du 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 les deux peuvent se déplacer, donc j'ai 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 alors, j'aurais dû l'implémenter aussi dans `Bicycle`, où elle n'est pas nécessaire.