bobby: Triggermethode in PHP

Beitrag lesen

Moin,

OK... kurzer Abriss

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.

Die ganze Factory-Funktionalität habe ich in einer Elternklasse "ORM" geschrieben, von der die einzelnen Entitätsklassen erben.

Diese Elternklasse sucht sich nun aus der aufrufenden Entitätsklasse alle Eigenschaften über eine Reflection heraus, holt die Daten aus der DB und erzeugt die Objekte und füllt diese VOLLKOMMEN automatisch die Objekte. DAs Speichern läuft ebenso voll automatisch. Gesteuert wird dies eben durch Flags in den Docs der properties

mal ein Beispiel

$artikel = \orm\Artikel::getById(1);

dabei wird mir der Artikel über die ORM-Klasse geholt und als vollständiges Object zurück gegeben.

$article->setContent('ABC');
$article->save();

Hier wird, wie üblich der Content gesetzt und ich speicher die Daten, was wieder über die ORM-Klasse funktioniert.

Nun möchte ich aber dass bei

$article->getContent();

Nicht zwingend der Englische Text ausgegeben wird, sondern evtl. eine vorhandene Übersetzung. ich hatte zuerst direkt beim Auslesen aus der DB die Daten ersetzt mit der jeweiligen Sprache. ABER wenn ich dann das Object wieder mit der save()-methode speichern würde, würde der falsche Text in die DB geschrieben (z.B. deutsch statt englisch)

Die Übersetzungen gehen übrigens alle über eine einzige Translate Tabelle.

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. 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.

Und ja, die Magie wird durch Ändern der Sichtbarkeit ausgelöst, was mir aber immer noch keinen Zugriff auf die Methode beschert.

Gruß Bobby

--
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <- ### Henry L. Mencken ### -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <- ### Viktor Frankl ### ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)