Hallo pl,
Traits als Solche kann man auch mit älteren Perl- und PHP- Versionen wo Traits nicht Bestandteil der Sprache sind bauen.
Ja. Sicher. Sag ich doch. Mit Delegation (um den Aufruf zur Trait-Methode zu delegieren) und Injektion (um dem Trait das nutzende Objekt verfügbar zu machen).
So wird es auch im Decorator-Pattern gemacht. Ein Nachteil im Vergleich zu einem statischen Trait ist, dass das Verhalten dynamisch hinzugefügt wird. Und ein Decorator kann auch nur auf öffentliche Methoden der Komponenten-Klasse zugreifen.
Deswegen ist das Decoratorpattern keine Alternative zu Traits, denn man möchte in Methoden auf sämtliche Eigenschaften der Instanz zugreifen können und zwar uneingeschränkt.
MFG