Il existe différentes raisons pour générer différentes entités:
Proxy - il est utilisé pour le chargement paresseux. Mais chaque type nécessite une classe proxy distincte, ce qui serait gênant pour les développeurs de les écrire manuellement pour que Magento les génère. Vous ne trouverez que des références aux proxys dans di.xml
Factory - est une classe utilisée pour créer des non-injectables (entités). Identique aux procurations. PHP n'a pas encore de génériques, nous générons donc automatiquement des usines pour que le développeur n'écrive pas de code standard. Vous interagirez avec les usines à travers le code Magento. Très probablement, vous aurez besoin de vos propres usines pour vos entités. Demandez simplement la fabrique correspondante dans le constructeur et elle sera générée lors de la prochaine exécution ou lors de l'exécution du compilateur.
Interceptor - est une classe d'infrastructure, qui est utilisée par le composant Interception. Comme Flyingmana et Phil Winkle l'ont remarqué, vous ne devez en aucun cas interagir avec eux.
Il y a un tas d'autres entités générées (comme Logger pour le mode de profilage de graphe d'objet) mais ces 3 sont les plus importantes.
Magento 2 peut également être compilé. La compilation accélère DI et interception. Toute la génération et la compilation de code peuvent être effectuées avec dev / tools / Magento / Tools / Di / compiler.php
Magento\Cms\Block\Block
le constructeur, une instance de\Magento\Cms\Model\BlockFactory
est utilisée. Cette classe n'est nulle part dans le code. Il se trouve uniquement dansvar/generation
. Donc, si je fais un module similaire, je devrai peut-être utiliser une classe similaire.C'est ainsi que Magento génère l'approche orientée aspect de la nouvelle plateforme; en générant réellement les "événements" avant, autour et après au lieu de les répartir dynamiquement. Cela établit un équilibre de commodité pour le programmeur et les performances de la plate-forme.
Certaines techniques telles que l'injection de dépendance automatique sont aplaties dans les classes générées plutôt qu'exécutées par réflexion - encore une fois - c'est une technique pour améliorer les performances.
la source