Існують різні причини для створення різних об'єктів:
Проксі - використовується для ледачого завантаження. Але кожен тип вимагає окремого проксі-класу, так що розробникам було б дратувати записувати їх вручну, щоб Magento генерував їх. Yo знайде посилання на Proxies лише у di.xml
Фабрика - це клас, який використовується для створення неін'єкційних матеріалів (сутностей). Те саме, що проксі. У PHP ще немає дженериків, тому ми автоматично генеруємо фабрики, щоб не змусити розробника писати кодовий код. Ви будете взаємодіяти з фабриками через код Magento. Швидше за все, вам знадобляться власні фабрики для ваших підприємств. Просто запитайте відповідну фабрику в конструкторі, і вона буде генерована під час наступного запуску або під час виконання компілятора.
Перехоплювач - це інфраструктурний клас, який використовується компонентом перехоплення. Як помітили Філінгмана і Філ Вінкл, ви ні в якому разі не повинні взаємодіяти з ними.
Існує безліч інших утворень (як Logger для режиму профілювання об'єктних графіків), але ці 3 є найважливішими.
Magento 2 також може бути складений. Компіляція робить DI та перехоплення швидшими. Весь генерація коду та компіляція можна виконати за допомогою dev / tools / Magento / Tools / Di / compiler.php
Magento\Cms\Block\Block
у конструкторі використовується примірник\Magento\Cms\Model\BlockFactory
. Такого класу ніде в коді немає. Воно зустрічається лише в Росіїvar/generation
. Тож якщо я роблю подібний модуль, можливо, мені доведеться використовувати подібний клас.