Magento 2 enthält eine Reihe von Klassendateien, die entweder vorgeneriert oder sofort generiert werden. Sie leben in
var/generated
Diese generierten Dateien enthalten Factory-Klassen. Aus der Dokumentation geht hervor, dass ein Programmierer Factory-Klassen verwendet, um "nicht injizierbare" Objekte zu instanziieren. Ein "nicht injizierbares" Objekt ist ein Objekt, das nicht über die __constructor
Abhängigkeitsinjektion hinzugefügt werden kann , da für die Instanziierung normalerweise Benutzereingaben erforderlich sind.
Aus der Dokumentation geht nicht hervor, wie Magento 2 weiß, dass es eine Factory-Klasse erzeugen muss. Dieses bisschen
Wenn der Objektmanager im Laufzeitmodus oder im Compiler auf eine nicht vorhandene Factory stößt, generiert der Objektmanager die Factory.
klingt so, als ob ich eine Factory-Klasse im Objekt-Manager (oder, im weiteren Sinne, in den Abhängigkeitsinjektions-Konstruktoren) verwende, die von Magento 2 für mich generiert wird. Aber woher weiß der Objektmanager, dass das, was ich anfordere, eine Fabrik ist?
Es scheint auch zwei Befehle zu geben, um alle generierten Klassen automatisch zu generieren (oder zu "kompilieren"). Wenn Sie einen dieser Befehle ausführen, wird eine große Anzahl von Factory-Klassen generiert. Welche Konfigurations- und / oder Codedateien betrachten diese Befehle, um die erforderlichen Factory-Objekte zu generieren?
Ich weiß, dass eine vollständige Verfolgung des Objektmanagers und / oder des Befehlscodes dies aufdecken würde, aber ich hoffe, diese lange und mühsame Reise zu vermeiden.