Seguindo com a nossa série sobre Dependency Injection, chegou a hora de falar sobre a Compilação de Dependências no Magento 2.

A compilação de dependências no Magento 2

Como já vimos nesta série sobre Dependency Injection no Magento 2, todas as dependências de uma classe devem ser declaradas em seu método construtor.  Depois de relembrar isso, vale reforçar que o Magento recomenda fortemente que as dependências passadas neste método construtor sejam interfaces, ao invés da classe concreta.
A vantagem da injeção de dependência via interfaces é o fato de qualquer módulo do sistema poder alterar o objeto passado sem quebrar qualquer comportamento pré-existente no sistema, visto que as interfaces servem como uma espécie de contrato, forçando que todas suas ‘classes filhas’ implementem os métodos declarados na interface.
Além disso, no Magento 2 temos algumas classes que não existem concretamente e precisam ser criadas de forma automática, como é o caso de proxies, factories e interceptors (gerados pela utilização de plugins).
Com base nisso, o Magento 2 possui um compilador próprio para coletar todas essas informações (classes) dos arquivos de configuração, criá-las e compilá-las no diretório ‘generated/code’. Estamos falando do arquivo di.xml (grave este nome, porque você vai usá-lo muito durante o desenvolvimento no M2).
Se você estiver rodando seu Magento 2 em developer mode, você não precisa se preocupar em executar o comando que vamos mostrar aqui embaixo, visto que em developer mode o próprio sistema se encarrega de gerar todas as classes dinamicamente de acordo com a execução da aplicação.
Já em production mode, para executar a compilação utilize o seguinte comando:
php bin/magento setup:di:compile
Sempre que você estiver em modo de produção e alterar algo em seu código, esse comando deve ser executado manualmente. Durante o processo de compilação, toda a configuração do Magento referente à Dependency Injection será carregada, ou seja, o Magento (internamente) vai percorrer cada um dos módulos ativos no sistema, carregar e mergear o conteúdo de todos os arquivos ‘di.xml’.
Depois disso, o sistema vai a compilar as classes necessárias de criação automática, no caso: as proxies, factories e interceptors.
Lembre-se: sem executar o comando acima, o Magento 2 não vai funcionar corretamente em prodution mode.
No próximo e último artigo da série sobre DI, vamos mostrar e explicar o conteúdo do arquivo ‘di.xml’ no Magento 2. Fique ligado!

Confira também os outros artigos desta série:

Dependency Injection no Magento 2 – Parte 1

– Equipe MagedIn University

Inscreva-se também no nosso canal do YouTube.