Magento 2: Excluir classes da geração de interceptores

9

No Magento 2 (beta9 e superior), você pode executar este comando php bin/magento setup:di:compilee todos os interceptadores, fábricas e proxies (e talvez outros) serão gerados na var/generationpasta para todas as classes que você tem na sua instância do magento.
Isso é útil para ambientes ao vivo porque, caso contrário, as classes mencionadas acima serão geradas no tempo de execução quando forem necessárias e podem afetar o desempenho.
Existe uma maneira de excluir algumas classes desse script para que os interceptores não sejam criados ao executar o comando?
Como exemplo: eu quero que o controlador Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticsnão tenha interceptores gerados.

Marius
fonte
Por que você precisa disso?
Anton Kril
@AntonKril. Pare de fazer perguntas e me dê uma solução: D. Agora, falando sério, estou tentando remover alguns módulos e, ao fazer isso, setup:di:compilefalha porque algumas classes pai estão ausentes. As classes que estendem essas classes ausentes ainda existem, mas não são usadas pelo aplicativo. E não consigo removê-los, pois estão nos módulos que preciso. Veja uma explicação completa abaixo: magento.stackexchange.com/questions/69040/…
Marius

Respostas:

7

para executar a partir do cli, pelo menos nas versões anteriores, existe o exclude-patternparâmetro Foi adicionado para evitar problemas quando uma classe não pode ser processada corretamente, como acontece, por exemplo, com as classes magento1. Os comandos e argumentos podem ter sido alterados convertendo-os em comandos do console.

Mas não tenho certeza de qual é seu objetivo, por isso não posso dizer se esta é uma boa solução para usar.

Flyingmana
fonte
Aqui está o que estou tentando fazer. Estou removendo alguns módulos para ver até onde posso ir. Entre esses módulos está o Reportmódulo. Mas, devido ao forte acoplamento entre o módulo Relatórios e o back-end, ainda existem classes no módulo de back-end que dependem das classes do módulo de relatório. Eu encontrei uma maneira de não usá-los, mas como o comando di analisa os arquivos, ele passa pelas classes "ignoradas" e tenta criar os interceptadores. Mas isso falha porque a classe pai de, Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticspor exemplo, não existe. Então, eu preciso de uma maneira de excluir isso.
Marius
parece que na abordagem de comando do console não há exclude-patternparâmetros. Ou pelo menos eu não encontrei. Eu olhei no DiCompileCommand::configure.
Marius
Entendo, você pode adicionar um problema solicitando essa funcionalidade referente a este PR: github.com/magento/magento2/pull/986 ou usar o changeset para testar como adicioná-lo temporariamente à sua compilação local.
Flyingmana 27/05