Istnieją różne powody generowania różnych podmiotów:
Proxy - służy do leniwego ładowania. Ale każdy typ wymaga osobnej klasy proxy, więc byłoby to denerwujące dla programistów, aby zapisywali je ręcznie, więc Magento je generuje. W di.xml znajdziesz tylko odniesienia do proxy
Fabryka - jest klasą używaną do tworzenia elementów innych niż zastrzyki. Taki sam jak proxy. PHP nie ma jeszcze generycznych, więc automatycznie generujemy fabryki, aby nie zmuszać dewelopera do pisania pełnego kodu. Będziesz wchodził w interakcje z fabrykami w całym kodzie Magento. Najprawdopodobniej będziesz potrzebował własnych fabryk dla swoich podmiotów. Wystarczy zapytać o odpowiednią fabrykę w konstruktorze, a zostanie wygenerowana przy następnym uruchomieniu lub podczas uruchamiania kompilatora.
Przechwytywacz - jest klasą infrastruktury używaną przez komponent Przechwytywania. Jak zauważyli Flyingmana i Phil Winkle, nie powinieneś się z nimi kontaktować.
Istnieje wiele innych encji (takich jak Logger dla trybu profilowania wykresów obiektowych), ale te 3 są najważniejsze.
Magento 2 można również skompilować. Kompilacja przyspiesza DI i przechwytywanie. Wszystkie generowanie i kompilowanie kodu można wykonać za pomocą dev / tools / Magento / Tools / Di / compiler.php
Magento\Cms\Block\Block
konstruktorze\Magento\Cms\Model\BlockFactory
używana jest instancja klasy . Tej klasy nigdzie nie ma w kodzie. Występuje tylko wvar/generation
. Więc jeśli robię podobny moduł, być może będę musiał użyć podobnej klasy.W ten sposób Magento generuje podejście do nowej platformy zorientowane na aspekty; poprzez faktyczne generowanie „zdarzeń” przed, wokół i po nich zamiast dynamicznego wywoływania ich. Zapewnia to równowagę wygody dla programisty i wydajności platformy.
Niektóre techniki, takie jak wstrzykiwanie automatycznej zależności, są spłaszczane w generowanych klasach, a nie wykonywane przez odbicie - ponownie - jest to technika poprawy wydajności.
źródło