Moin,
ich beschäftige mich momentan mit der Datenkapselung in OO Anwendungen.
Ich habe momentan alle Klassen, die Daten aus der Datenbank representieren in eine Kategorie gepackt, die dann von der abstrakten Klasse DatabaseObject erben.
Die User Klasse bspw. holt im Konstruktor die Daten aus der Datenbank und übergibt die an die Elternklasse DatabaseObject, die dann via __get die Daten erreichbar macht.
Zum bearbeiten nutze ich eigene Editor Klassen, sprich die Datenklassen sollen readonly sein, was sie momentan durch den getter auch sind, nur gefällt mir das ganze nicht, denn die IDE Features (bspw. Autovervollständigung) leiden darunter.
Das IDE Problem lässt sich anscheinend mit @property im PhpDoc beheben, nur schlägt PhpStorm mir die Eigenschaften interessanterweise nur vor, wenn ich die @property Tags in der Elternklasse anlege, was etwas sinnfrei ist.
Mich würde interessieren, wie ihr die Datenkapselung macht und ob euch eine Lösung für das IDE Problem einfällt.
Einzelne getter Funktionen widerstreben mir für den Anwendungsfall etwas.
ich beschäftige mich momentan mit der Datenkapselung in OO Anwendungen.
Ich habe momentan alle Klassen, die Daten aus der Datenbank representieren in eine Kategorie gepackt, die dann von der abstrakten Klasse DatabaseObject erben.
Die User Klasse bspw. holt im Konstruktor die Daten aus der Datenbank und übergibt die an die Elternklasse DatabaseObject, die dann via __get die Daten erreichbar macht.
Zum bearbeiten nutze ich eigene Editor Klassen, sprich die Datenklassen sollen readonly sein, was sie momentan durch den getter auch sind, nur gefällt mir das ganze nicht, denn die IDE Features (bspw. Autovervollständigung) leiden darunter.
Das IDE Problem lässt sich anscheinend mit @property im PhpDoc beheben, nur schlägt PhpStorm mir die Eigenschaften interessanterweise nur vor, wenn ich die @property Tags in der Elternklasse anlege, was etwas sinnfrei ist.
Mich würde interessieren, wie ihr die Datenkapselung macht und ob euch eine Lösung für das IDE Problem einfällt.
Einzelne getter Funktionen widerstreben mir für den Anwendungsfall etwas.
Kommentar