Hi Leute,
Kann mir einer bitte den Unterschied erklären zwischen:
1) GeneralUtility->makeInstance()
und
2) ObjectManager->get()?
Wann wird welches dieser zwei Methoden zur Instanziierung einer Klasse verwendet?
Schöne Grüße
Hi Leute,
Kann mir einer bitte den Unterschied erklären zwischen:
1) GeneralUtility->makeInstance()
und
2) ObjectManager->get()?
Wann wird welches dieser zwei Methoden zur Instanziierung einer Klasse verwendet?
Schöne Grüße
Makeinstance ist eine statische Methode die Du immer aufrufen kannst und der Du soweit ich weiß auch direkt Parameter für die Instanzierung übergeben kannst. Damit kannst Du also immer Instanzen erzeugen auch wenn beispielsweise Extbase Komponenten und damit der Objectmanager (z.B. bei einem Hook) noch gar nicht existieren.
Der Objectmanager muss zunächst selbst instanziert werden wenn er noch nicht vorhanden ist z.B. mit makeInstance. Ich probier mal ein sinnvolles Beispiel rauszusuchen...
EDIT: Hier zum Beispiel: https://gist.github.com/akiessling/8266017
Noch ein wichtiger Unterschied: $objectManager->get() berücksichtigt die Dependencies! In Extbase-Projekten sollte deshalb immer mit get() instanziert werden.
Ok aber wird denn objectManager nicht für jeden Controller automatisch instanziiert? Normalerweise brauch ich doch nicht selbst den objectManager mit GeneralUtility::makeInstance() zu instanziieren sondern kann doch direct in der Action mit $this->objectManager drauf zugreifen?
Ja der Controller hat ihn schon.