В Magento 2 (бета-версия 9 и выше) вы можете запустить эту команду, php bin/magento setup:di:compile
и все перехватчики, фабрики и прокси-серверы (и, возможно, другие) будут сгенерированы в var/generation
папке для всех классов, которые есть в вашем экземпляре magento.
Это полезно для реальных сред, поскольку в противном случае упомянутые выше классы будут генерироваться во время выполнения, когда они необходимы, и могут влиять на производительность.
Есть ли способ исключить некоторые классы из этого скрипта, чтобы при запуске команды не создавались перехватчики?
Как пример: я хочу, чтобы контроллер Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatistics
не генерировал перехватчики.
magento2-dev-beta
Мариус
источник
источник
setup:di:compile
сбой, потому что некоторые родительские классы отсутствуют. Классы, которые расширяют эти отсутствующие классы, все еще существуют, но они не используются приложением. И я не могу удалить их, так как они находятся в модулях, которые мне нужны. См. Полное объяснение ниже: magento.stackexchange.com/questions/69040/…Ответы:
для запуска из cli хотя бы в более ранних версиях есть
exclude-pattern
параметр. Он был добавлен, чтобы избежать проблем, когда класс не может быть обработан правильно, как это происходит, например, с классами magento1. Команды и аргументы могли быть изменены путем преобразования их в консольные команды.Но я не уверен, какова ваша цель, поэтому я не могу сказать, является ли это хорошим решением для использования.
источник
Report
модуль. Но из-за тесной связи между отчетами и модулем Backend все еще есть классы в модуле backend, которые зависят от классов модуля отчета. Я нашел способ не использовать их, но поскольку команда di анализирует файлы, она проходит через «игнорируемые» классы и пытается создать перехватчики. Но это не удается, потому что родительский класс,Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatistics
например, не существует. Поэтому мне нужен способ исключить это.exclude-pattern
param. Или, по крайней мере, я не нашел его. Я заглянул внутрьDiCompileCommand::configure
.