Tach!
ich habe für jede Entity eine ORM-Klasse. z.B. Artikel mit vielen privaten Properties z.B. $title
So. Nun habe ich zu jedem Property einen Getter und Setter. Die geben ja nur stupide die Eigenschaften zurück.
Schon allein das ist so langweilig niederzuschreiben, dass ich stattdessen Magie verwendet hätte. Wenn es wirklich eine eigene Art von Zugriff für ein Feld braucht, kann man das immer noch als separate Methode ausführen.
Noch besser als Methodenaufrufe zu notieren wäre das direkte Zugreifen auf die Eigenschaften. Höre ich da Kapselung? Was will man da groß kapseln, wenn es sowieso ein 1:1-Durchgriff ist. Bei Abweichungen lässt man die Eigenschaft weg und __get()/__set() greifen ins Geschehen ein, worüber man dann das Verhalten steuern kann. Vorteil ist auch, dass jede Menge sinnlose Methodenaufrufe wegfallen. Die sind ja auch nicht kostenlos zu haben.
$artikel = \orm\Artikel::getById(1);
Active-Record-Prinzip. Bin ich kein Fan von. Ich mag lieber POxOs und Repositories für das DB-Handling. Schon allein wegen der Trennung der Zuständigkeiten. Aber egal.
ich bräuchte also einen Weg bei dem mir bei getContent() nicht automatisch der englische Text ausgegeben werden würde, sondern wenn vorhanden die Übersetzung.
Eigentlich wäre das eine Aufgabe für einen Lokalisierer/Normalisierer, um die zusätzliche Funktionalität des Hin- und Herübersetzens aus der Datenbankgeschichte rauszuhalten. Am besten ist es, wenn solange wie möglich normalisert gearbeitet und erst zur Ausgabe übersetzt wird.
Und dies OHNE in dem Getter rumschreiben zu müssen. Die Entitätsklassen möchte ich doch eher allgemein halten und nur durch die Flags steuern.
Ich denken, mit 1unitedpowers Vorschlag wird die Geschichte am saubersten.
dedlfix.