394 Stimmen

Eigenschaften vs. Schnittstellen

Ich habe in letzter Zeit versucht, mich in PHP einzuarbeiten, und bin immer wieder auf Traits gestoßen. Ich verstehe das Konzept der horizontalen Wiederverwendung von Code und dass man nicht unbedingt von einer abstrakten Klasse erben will. Was ich nicht verstehe, ist: Was ist der entscheidende Unterschied zwischen der Verwendung von Traits und Schnittstellen?

Ich habe versucht, einen vernünftigen Blogbeitrag oder Artikel zu finden, in dem erklärt wird, wann man das eine oder das andere verwenden sollte, aber die Beispiele, die ich bisher gefunden habe, scheinen so ähnlich zu sein, dass sie identisch sind.

1voto

Alessandro Martin Punkte 794

Der Hauptunterschied besteht darin, dass bei Schnittstellen die tatsächliche Implementierung jeder Methode in jeder Klasse, die die Schnittstelle implementiert, definiert werden muss, so dass viele Klassen dieselbe Schnittstelle implementieren können, aber mit unterschiedlichem Verhalten, während Traits nur Code-Blöcke sind, die in eine Klasse eingefügt werden; ein weiterer wichtiger Unterschied besteht darin, dass Trait-Methoden nur Klassen-Methoden oder statische Methoden sein können, im Gegensatz zu Schnittstellen-Methoden, die auch Instanz-Methoden sein können (und normalerweise auch sind).

1voto

mercury Punkte 1671

Eine Schnittstelle ist ein Vertrag, der besagt, dass dieses Objekt in der Lage ist, diese Sache zu tun", während eine Eigenschaft dem Objekt die Fähigkeit verleiht, diese Sache zu tun.

Ein Trait ist im Wesentlichen eine Möglichkeit, Code zwischen Klassen zu "kopieren und einzufügen".

Versuchen Sie, diesen Artikel zu lesen, Was sind PHP-Merkmale?

1voto

Chirag Prajapati Punkte 471

Der Trait ist dasselbe wie eine Klasse, die wir für die Mehrfachvererbung und die Wiederverwendbarkeit von Code verwenden können.

Wir können Traits innerhalb der Klasse verwenden und wir können auch mehrere Traits in derselben Klasse mit dem Schlüsselwort 'use' verwenden.

Die Schnittstelle wird für die Wiederverwendbarkeit des Codes genauso verwendet wie ein Trait

die Schnittstelle ist mehrere Schnittstellen erweitern, so können wir die Mehrfachvererbung Probleme zu lösen, aber wenn wir die Schnittstelle implementieren, dann sollten wir alle Methoden innerhalb der Klasse zu schaffen. Für weitere Informationen klicken Sie auf den untenstehenden Link:

http://php.net/manual/en/language.oop5.traits.php http://php.net/manual/en/language.oop5.interfaces.php

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X