답변:
다른 엔티티를 생성하는 데는 여러 가지 이유가 있습니다.
프록시 -게으른 로딩에 사용됩니다. 그러나 각 유형에는 별도의 프록시 클래스가 필요하므로 개발자가 수동으로 작성하는 것이 성가 시므로 Magento가 생성합니다. di.xml에서 프록시에 대한 참조 만 찾을 수 있습니다.
팩토리 -비 주사 가능 항목 (엔티티)을 만드는 데 사용되는 클래스입니다. 프록시와 동일합니다. PHP에는 아직 제네릭이 없으므로 개발자가 상용구 코드를 작성하지 않도록 팩토리를 자동 생성합니다. Magento 코드에서 팩토리와 상호 작용합니다. 아마도 당신은 당신의 엔티티에 대한 자신의 공장이 필요할 것입니다. 생성자에서 해당 팩토리를 요청하면 다음 실행 또는 컴파일러 실행 중에 생성됩니다.
인터셉터 -인터 셉션 구성 요소에서 사용되는 인프라 클래스입니다. Flyingmana와 Phil Winkle은 어쨌든 그들과 상호 작용해서는 안된다는 것을 알았습니다.
오브젝트 그래프 프로파일 링 모드의 로거와 같이 생성 된 다른 엔티티가 많이 있지만이 3 가지가 가장 중요합니다.
마 젠토 2도 컴파일 할 수 있습니다. 컴파일 하면 DI 및 인터셉트가 더 빨라집니다. 모든 코드 생성 및 컴파일은 dev / tools / Magento / Tools / Di / compiler.php로 수행 할 수 있습니다
Magento\Cms\Block\Block
. 생성자에서 인스턴스\Magento\Cms\Model\BlockFactory
가 사용됩니다. 그 클래스는 코드의 어디에도 없습니다. 에서 만 찾을 수 있습니다var/generation
. 따라서 비슷한 모듈을 사용하는 경우 비슷한 클래스를 사용해야 할 수도 있습니다.