W Magento 2 (beta9 i wyżej) możesz uruchomić to polecenie, php bin/magento setup:di:compile
a wszystkie przechwytujące, fabryki i proxy (i może inne) zostaną wygenerowane w var/generation
folderze 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\RefreshStatistics
nie generował przechwytywaczy.
magento2-dev-beta
Marius
źródło
źródło
setup:di:compile
nie 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/...Odpowiedzi:
do uruchamiania z cli przynajmniej we wcześniejszych wersjach istnieje
exclude-pattern
parametr. 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.
źródło
Report
moduł. 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\RefreshStatistics
na przykład klasa nadrzędna nie istnieje. Potrzebuję więc sposobu, aby to wykluczyć.exclude-pattern
parametrów. A przynajmniej jej nie znalazłem. Zajrzałem do środkaDiCompileCommand::configure
.