Avatar ·

Traits vs Interfaces in PHP: Wann was verwenden?

Hallo zusammen! Ich bin ein PHP-Anfänger und bin ständig verwirrt, wann ich Traits und wann Interfaces verwenden soll. Beide scheinen die Wiederverwendung von Code zu ermöglichen, 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 dann habe ich mich gefragt: Wäre es nicht besser gewesen, `startEngine()` als Methode eines Interfaces zu definieren? Aber dann müsste ich sie auch in `Bicycle` implementieren, wo sie nicht benötigt wird.