Magento 2: Виключити класи з генерації перехоплювачів


9

У Magento 2 (beta9 і вище) ви можете запустити цю команду, php bin/magento setup:di:compileі всі перехоплювачі, фабрики та проксі-сервери (а може бути й інші) будуть генеровані в var/generationпапці для всіх класів у вашому екземплярі magento.
Це корисно для живих середовищ, оскільки в іншому випадку класи, згадані вище, будуть генеруватися під час виконання, коли вони знадобляться та можуть вплинути на продуктивність.
Чи є спосіб виключити деякі класи з цього сценарію, щоб перехоплювачі не створювались під час виконання команди?
Як приклад: Я хочу, щоб у контролера Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticsне було створено перехоплювачів.


Навіщо вам це потрібно?
Антон Криль

@AntonKril. Перестаньте задавати питання і дайте мені рішення: D. Зараз серйозно, я намагаюся видалити деякі модулі, і коли це робиться, setup:di:compileне вдається, оскільки деякі батьківські класи відсутні. Класи, що розширюють ці відсутні класи, як і раніше, але вони не використовуються додатком. І я не можу їх видалити, оскільки вони знаходяться в потрібних мені модулях. Дивіться повне пояснення нижче: magento.stackexchange.com/questions/69040/…
Маріус

Відповіді:


7

для запуску з cli принаймні в більш ранніх версіях є exclude-patternпараметр. Він був доданий, щоб уникнути проблем, коли клас не може бути оброблений правильно, як це відбувається, наприклад, з класами magento1. Команди та аргументи можуть бути змінені, перетворивши їх у консольні команди.

Але я не впевнений, яка у вас мета, тому не можу сказати, чи це хороше рішення використовувати.


Ось що я намагаюся зробити. Я виймаю деякі модулі, щоб побачити, як далеко я можу зайти. Серед цих модулів - Reportмодуль. Але через тісний зв'язок між модулями Reports і Backend все ще є класи в модулі резервного копіювання, які залежать від класів модуля звіту. Я знайшов спосіб не використовувати їх, але оскільки команда di розбирає файли, вона проходить через "ігноровані" класи і намагається побудувати перехоплювачі. Але це не вдається, оскільки, наприклад, батьківського класу Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatistics, не існує. Тож мені потрібен спосіб виключити це.
Маріус

він каже, що в командному підході консолі немає exclude-patternпарам. Або принаймні я його не знайшов. Я зазирнув DiCompileCommand::configure.
Маріус

Я бачу, ви можете додати проблему з проханням про цю функціональність до цього PR: github.com/magento/magento2/pull/986 або ви скористаєтесь набором змін там, щоб перевірити, як додати її тимчасово для локальної збірки.
Flyingmana
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.