Persistenz · Frage 7 von 12
Welche Methode ruft Extbase auf, nachdem ein Model-Objekt aus der Datenbank geladen wurde, sodass man dort z. B. ObjectStorage-Properties initialisieren kann?
1 Antwort ist richtig. Einfach
Lösung anzeigen
Lösung
- A initializeObject()
Erklärung
Beim Laden aus der Datenbank ruft Extbase den Konstruktor nicht auf: Der DataMapper erzeugt das Objekt mit der Bibliothek doctrine/instantiator und setzt die Werte direkt. Danach ruft er initializeObject() auf. Die Empfehlung lautet deshalb: Initialisierungen wie $this->speakers = new ObjectStorage(); in initializeObject() schreiben und diese Methode zusätzlich im Konstruktor aufrufen – so ist die Property sowohl bei new Conference() als auch bei geladenen Objekten gesetzt. Nur auf den Konstruktor zu setzen ist die typische Falle. initializeAction() gehört zum Controller und läuft vor jeder Action, nicht beim Laden eines Models.