Avatar ·

Traits vs Interfaces in PHP: wann was verwenden?

Hallo zusammen! Ich bin ein PHP-Anfänger und ich bin ständig verwirrt, wann ich Traits und wann Interfaces verwenden soll. Anscheinend helfen beide, Code wiederzuverwenden, aber ich habe das Gefühl, dass es unterschiedliche Dinge sind.\n\nHier ist ein konkretes Beispiel. Ich habe eine Klasse `Car` und eine Klasse `Bicycle`. Beide können sich bewegen, also habe ich ein Interface `MovableInterface` mit der Methode `move()` erstellt. Das funktioniert, aber in jeder Klasse muss ich meine eigene Implementierung der Methode `move()` schreiben.\n\nDann habe ich von Traits erfahren. Ich habe einen Trait `EngineTrait` mit der Methode `startEngine()` erstellt. Jetzt kann ich ihn in die Klasse `Car` einbinden, aber nicht in `Bicycle`, weil ein Fahrrad keinen Motor hat. Und da habe ich mich gefragt: Wäre es nicht besser gewesen, `startEngine()` als Methode eines Interfaces zu machen? Aber dann müsste ich es auch in `Bicycle` implementieren, wo es nicht benötigt wird.