Soweit ich von Scala und Hack-
Mixins:
- Kann Status haben (dh Instanzeigenschaften)
- Kann nur konkrete Methoden liefern
- Kann Konstruktoren haben, die in derselben Reihenfolge aufgerufen werden, in der ihre Klassen gemischt wurden
- Wenn
A
eingemischtB
undC
,A instanceof B == false
undA instanceof C == false
Züge:
- Kann nur Methoden bereitstellen, nicht angeben
- Kann abstrakte Methoden deklarieren, die ein Verbraucher implementieren muss
- Kann keine Konstruktoren haben
- Wenn
A
implementiert MerkmaleB
undC
,A instanceof B == false
undA instanceof C == false
Ist das richtig oder fehlt mir etwas? Sind diese Definitionen für eine OO-Sprache oder nur für die oben genannten korrekt?
Antworten:
PHP hat kein Konzept für Mixins, aber es hat Eigenschaften, die wie eine Mischung aus Eigenschaften und Mixins von Hack / Scala aussehen:
Ich glaube nicht, dass es überhaupt eine Sache gibt, die in allen OO-Sprachen gleich funktioniert. Sogar einige Grundlagen wie Vererbung und Schnittstellen weisen einige Variationen auf, ganz zu schweigen von verschwommeneren Konstrukten wie Merkmalen / Mixins.
quelle
Merkmale sind statischer Zugriff in PHP, wie von Benjamin Eberlei in seinem Blog erklärt . Sie ähneln dem automatischen Kopieren und Einfügen von Code.
Dies bedeutet nicht, dass Eigenschaften absolut böse sind, aber sie werfen meistens Kopplungsprobleme auf.
Mixin ist im Allgemeinen die übliche (etwas sichere) Verwendung der Mehrfachvererbung. Sprachen mit Mehrfachvererbung und By-Ref-Typisierung (Ente) wie Python bieten eine elegante Verwendung für Mixins.
quelle