Magento 2 содержит ряд файлов классов, которые либо предварительно сгенерированы, либо создаются на лету. Они живут в
var/generated
Эти сгенерированные файлы включают фабричные классы. Из документации я понимаю, что программист использует фабричные классы для создания экземпляров «неинъекционных» объектов. «Неинъецируемый» объект - это объект, который не может быть добавлен посредством __constructor
внедрения зависимости, обычно потому, что для его создания требуется пользовательский ввод.
Что не ясно из документации, так это то, что Magento 2 знает, что ему нужно создать фабричный класс. Этот бит
Если менеджер объектов в режиме выполнения или компилятор обнаруживает несуществующую фабрику, менеджер объектов генерирует фабрику.
звучит так, будто если я использую фабричный класс в диспетчере объектов (или, как следствие, в внедрении зависимостей __constructors), Magento 2 сгенерирует его для меня. Но как менеджер объектов узнает, что я запрашиваю фабрику?
Кроме того, кажется, есть две команды для автоматической генерации (или «компиляции») всех сгенерированных классов. Выполнение любой из этих команд генерирует большое количество классов Factory. Какие файлы конфигурации и / или кода эти команды рассматривают для создания необходимых заводских объектов?
Я знаю, что отслеживание менеджера объектов и / или кода команды до конца показало бы это, но я надеюсь избежать этого долгого и трудного пути.