Zitat:
Zitat von nikosch Habe ich noch nicht ganz durchdrungen. Wer speichert (die User Klasse), unn wo treten die Daten auf bzw. wie werden sie übergeben (liest die angetriggerte Funktion die dann über eine Methode aus dem Event-erzeugenden Objekt oder wie)? |
Der EventHandler, der sich konkret für "User::save" registriert hat bekommt den Event an seine Interface-Methode handle(Event $event) übergeben. Ein Event besitzt eine $context Property, in der alles abgelegt werden kann, was den Event ausmacht, z.B. das konkrete User-Objekt.
Letztlich landet also das User-Objekt bei new Database_Csv() oder wem auch immer, der natürlich dafür ausgelegt sein muss. Im Prinzip also ein Mapper, wie du es hier auch geschrieben hast:
Zitat:
|
Wie wärs mit einem spezialisierten Objekt, das bspw. von Datenbankobjekt erbt (und seine Connection und Methoden nutzt) aber mit bspw. User-Objekten umgehen kann? Diesem bräuchtest Du dann nur das User-Objekt zu übergeben und 'save () zu drücken'.
|
Mit dem Vorteil, dass außer dem EventDispatcher niemand weiß, wer das Objekt nun gespeichert hat.