Es gibt verschiedene Gründe, unterschiedliche Entitäten zu generieren:
Proxy - wird zum verzögerten Laden verwendet. Für jeden Typ ist jedoch eine separate Proxy-Klasse erforderlich, sodass es für Entwickler ärgerlich wäre, sie manuell zu schreiben, damit Magento sie generiert. Yo findet nur Verweise auf Proxies in di.xml
Factory - ist eine Klasse, mit der nicht injizierbare Elemente (Entitäten) erstellt werden. Gleich wie Proxies. PHP hat noch keine Generika, daher generieren wir automatisch Fabriken, damit Entwickler keinen Boilerplate-Code schreiben. Sie werden mit Fabriken im gesamten Magento-Code interagieren. Höchstwahrscheinlich benötigen Sie Ihre eigenen Fabriken für Ihre Unternehmen. Fragen Sie einfach nach der entsprechenden Factory im Konstruktor und sie wird beim nächsten Lauf oder während des Compilerlaufs generiert.
Interceptor - ist eine Infrastrukturklasse, die von der Interception-Komponente verwendet wird. Wie Flyingmana und Phil Winkle bemerkten, sollten Sie sowieso nicht mit ihnen interagieren.
Es werden eine Reihe anderer Entitäten generiert (z. B. Logger für den Profilmodus für Objektdiagramme), aber diese drei sind am wichtigsten.
Magento 2 kann auch kompiliert werden. Durch die Kompilierung werden DI und Interception schneller. Die gesamte Codegenerierung und -kompilierung kann mit dev / tools / Magento / Tools / Di / compiler.php erfolgen
Magento\Cms\Block\Block
Konstruktor wird eine Instanz von\Magento\Cms\Model\BlockFactory
verwendet. Diese Klasse ist nirgends im Code. Es ist nur in gefundenvar/generation
. Wenn ich also ein ähnliches Modul mache, muss ich möglicherweise eine ähnliche Klasse verwenden.Auf diese Weise generiert Magento den aspektorientierten Ansatz für die neue Plattform. indem die Vorher-, Umher- und Nachher-Ereignisse tatsächlich generiert werden, anstatt sie dynamisch auszulösen. Dies schafft ein Gleichgewicht zwischen Komfort für den Programmierer und Leistung für die Plattform.
Einige Techniken wie die automatische Abhängigkeitsinjektion werden in die generierten Klassen abgeflacht und nicht über Reflexion ausgeführt. Dies ist wiederum eine Technik zur Verbesserung der Leistung.
quelle