Tach!
Wie haben sich die PHP Framework Entwickler es denn anders überlegt um dennoch an eine Art Datentyp zu kommen?
Du kannst ja nur Methoden im Interface definieren, also bleiben dir da nur Getter und Setter. Ich würde das aber nicht tun wollen. Ein Setter, der lediglich eine Variable schreibt und ein Getter, der nur den Variableninhalt ausliest bringt keine Vorteile. Im Gegenteil, da ist bei jedem Zugriff ein unnötiger Methodenaufruf abzuarbeiten.
Nun wird bestimmt gleich jemand um die Ecke kommen und Kapselung und danach Konsistenz rufen. Da kann ich entgegnen, ein Getter-Setter-Paar, das lediglich 1:1 liest und schreibt, kapselt effektiv gar nichts. Eine private Eigenschaft ist damit genauso manipulierbar, wie wenn sie öffentlich zugänglich wäre. Die Sachlage wird jedoch dann anders, wenn der Lese- oder der Schreibzugriff durch das Nichtvorhandensen eines der beiden Getter/Setter verhindert wird, oder wenn Getter/Setter weitergehenden Code enthalten. Die Konsistenz-Fanatiker sagen dann, dass man den Zugriff gern einheitlich über Getter/Setter gesehen haben möchte, und nehmen dann stillschweigend eine schlechtere Performance in Kauf. Allerdings sollte man sich fragen, warum da überhaupt von anderen Objekten her ein Zugriff auf Eigenschaften notwendig ist, solange es sich nicht um reine Datenobjekte handelt (POPO, POCO, POJO, ...). Vielleicht sollte man lieber an der Architektur ansetzen, statt Ungünstiges mit noch mehr Ungünstigem anzureichern, nur damit es am Ende hübsch aussieht.
dedlfix.