문제

Magento 2에서는 자동으로 생성되고 var/generation에 저장된 클래스 세트가 있으며 핵심 코드에서 사용됩니다.
코어 모듈 중 하나를 복제하여 사용자 정의 모듈을 만들려고하는 동안, 내 모듈에도 생성 된 클래스가 있습니다.
생성 된 클래스에서는 Proxys, 인터셉터, 공장을 보았습니다 ....

자동 생성되는 클래스 또는 유형의 클래스 또는 유형의 클래스 목록이 있습니까? 그리고 측면 질문으로 ... 언제 어디서 생성됩니까?

도움이 되었습니까?

해결책

다른 엔티티를 생성하는 데는 여러 가지 이유가 있습니다.

프록시 - 게으른 로딩에 사용됩니다. 그러나 각 유형은 개발자가 수동으로 작성하는 것을 짜증나게하는 별도의 프록시 클래스를 필요로하므로 Magento가 생성합니다. 요는 di.xml의 프록시에 대한 참조 만 찾을 것입니다

팩토리 - 비 주입 파일 (엔티티)을 만드는 데 사용되는 클래스입니다. 프록시와 동일합니다. PHP에는 아직 제네릭이 없으므로 개발자가 보일러 플레이트 코드를 작성하지 않도록 공장을 자동 생성합니다. Magento 코드 전반에 걸친 공장과 상호 작용할 것입니다. 대부분 귀하는 귀하의 엔티티에 대한 자신의 공장이 필요할 것입니다. 그냥 생성자의 해당 팩토리를 요청하고 다음 실행 또는 컴파일러 실행 중에 생성됩니다.

인터셉터 - 인터셉트 구성 요소에서 사용되는 인프라 클래스입니다. 비행 마나와 필 윙클이 당신을 어쨌든 그들과 상호 작용하지 않아야합니다.

다른 엔티티가 생성됩니다 (오브젝트 그래프 프로파일 링 모드 용 로거와 같은).이 3은 가장 중요합니다.

마젠토 2는 또한 컴파일 될 수 있습니다. 컴파일 은 DI와 가로 훈포를 더 빨리 만듭니다. 모든 코드 생성 및 컴파일은 Dev / Tools / Magento / Tools / DI / Compiler.php 로 수행 할 수 있습니다.

다른 팁

개념에서 :

어떤 종류의 클래스가 생성 될지, 당신이 그 (것)들을 만지거나 사용할 필요가 없으므로, 당신이해야 할지를 필요로하지 않아도됩니다.

그들은 즉시 생성되었지만, 나중에 CLI 명령을 통해 생성되어야합니다.

내부 부품이 새 것에 대한 필요성을 얻을 때 어떤 시간이 존재하는 목록이 존재할 수있는 목록을 누릴 수 있습니다.그러나 그들에 대한 액세스는 항상 일반 문서화 된 API (일반적으로 함수 호출로 알려짐) 뒤에 숨겨져있을 것입니다.

이것은 Magento가 새로운 플랫폼에 대한 화면 지향적 인 접근 방식을 생성하는 방법입니다.실제로 그들을 역동적으로 파견하는 대신 "이벤트"를 실제로 생성함으로써이것은 플랫폼을위한 프로그래머와 성능에 대한 편의성을 줄입니다.

자동 종속성 주입과 같은 일부 기술은 반사를 통해 실행 된 대신 생성 된 클래스로 평평하게됩니다. 이는 성능을 향상시키는 기술입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top