O Magento 2 contém vários arquivos de classe que são pré-gerados ou são gerados em tempo real. Eles vivem em
var/generated
Esses arquivos gerados incluem classes de fábrica. A partir da documentação , entendo que um programador usa classes de fábrica para instanciar objetos "não injetáveis". Um objeto "não injetável" é um objeto que não pode ser adicionado via __constructor
injeção de dependência, geralmente porque requer entrada do usuário para instanciar.
O que não está claro na documentação é como o Magento 2 sabe que precisa gerar uma classe de fábrica. Este pouco
Se uma fábrica inexistente for encontrada pelo gerenciador de objetos no modo de tempo de execução ou compilador, o gerenciador de objetos gerará a fábrica.
faz parecer que se eu usar uma classe de fábrica no gerenciador de objetos (ou, por extensão, nos construtores de injeção de dependência), o Magento 2 a gerará para mim. Mas como o gerente de objetos sabe que o que estou solicitando é uma fábrica?
Além disso, parece haver dois comandos para gerar automaticamente (ou "compilar") todas as classes geradas. A execução de um desses comandos gera um grande número de classes Factory. Quais arquivos de configuração e / ou código esses comandos estão procurando para gerar os objetos de fábrica necessários?
Eu sei que rastrear o gerenciador de objetos e / ou o código de comando até o fim revelaria isso, mas espero evitar essa longa e árdua jornada.