Magento 2: Wyklucz klasy z generowania przechwytywaczy

9

W Magento 2 (beta9 i wyżej) możesz uruchomić to polecenie, php bin/magento setup:di:compilea wszystkie przechwytujące, fabryki i proxy (i może inne) zostaną wygenerowane w var/generationfolderze dla wszystkich klas, które masz w instancji magento.
Jest to przydatne w środowiskach na żywo, ponieważ w przeciwnym razie klasy wymienione powyżej zostaną wygenerowane w czasie wykonywania, gdy będą potrzebne i mogą mieć wpływ na wydajność.
Czy istnieje sposób na wykluczenie niektórych klas ze skryptu, aby przechwytywacze nie zostały utworzone podczas uruchamiania polecenia?
Jako przykład: chcę, aby kontroler Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticsnie generował przechwytywaczy.

Marius
źródło
Dlaczego tego potrzebujesz?
Anton Kril
@AntonKril. Przestań zadawać pytania i daj mi rozwiązanie: D. Poważnie, próbuję usunąć niektóre moduły, a przy tym setup:di:compilenie udaje się, ponieważ brakuje niektórych klas nadrzędnych. Klasy, które rozszerzają te brakujące klasy, nadal istnieją, ale nie są używane przez aplikację. I nie mogę ich usunąć, ponieważ są w modułach, których potrzebuję. Zobacz pełne wyjaśnienie poniżej: magento.stackexchange.com/questions/69040/...
Marius

Odpowiedzi:

7

do uruchamiania z cli przynajmniej we wcześniejszych wersjach istnieje exclude-patternparametr. Zostało dodane, aby uniknąć problemów, gdy klasa nie może być poprawnie przetworzona, tak jak dzieje się to na przykład w przypadku klas magento1. Polecenia i argumenty mogły ulec zmianie przez konwersję ich na polecenia konsoli.

Ale nie jestem pewien, jaki jest twój cel, więc nie mogę powiedzieć, czy jest to dobre rozwiązanie.

Flyingmana
źródło
Oto, co próbuję zrobić. Usuwam niektóre moduły, aby zobaczyć, jak daleko mogę się posunąć. Wśród tych modułów jest Reportmoduł. Ale ze względu na ścisłe powiązanie między raportami a modułem zaplecza nadal istnieją klasy w module zaplecza, które zależą od klas modułu raportu. Znalazłem sposób, aby ich nie używać, ale ponieważ polecenie di analizuje pliki, przechodzi przez klasy „ignorowane” i próbuje zbudować przechwytywacze. Ale to się nie udaje, ponieważ Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatisticsna przykład klasa nadrzędna nie istnieje. Potrzebuję więc sposobu, aby to wykluczyć.
Marius
wydaje się, że w podejściu do konsoli nie ma żadnych exclude-patternparametrów. A przynajmniej jej nie znalazłem. Zajrzałem do środka DiCompileCommand::configure.
Marius
Widzę, że możesz dodać problem z pytaniem o tę funkcjonalność w odniesieniu do tego PR: github.com/magento/magento2/pull/986 lub możesz użyć tam zestawu zmian, aby przetestować, jak dodać go tymczasowo dla twojej lokalnej wersji.
Flyingmana