답변:
What case We use di.xml ?
Magento 2 고객 모듈에서 간단한 예를 들어 보겠습니다.
1. 선호
<preference for="Magento\Customer\Api\AddressRepositoryInterface"
type="Magento\Customer\Model\ResourceModel\AddressRepository" />
위의 코드에서 누군가 인스턴스화를 요청하면 Magento\Customer\Api\AddressRepositoryInterface
Magento \ Customer \ Model \ ResourceModel \ AddressRepository 개체 (유형 특성)가 인스턴스화됩니다.
클래스 기본 설정 구성은 인터페이스를위한 것이 아니라 실제 클래스를 변경할 수도 있습니다.
<preference for="Magento\Customer\Model\CustomerManagement"
type="Magento\Customer\Model\customModel" />
'CustomerManagement'에 대한 'customModel'클래스를 작성하고 변경을 수행 할 수 있습니다. 클래스 재 작성 시스템을 대체하는 클래스 환경 설정 시스템.
http://alanstorm.com/magento_2_object_manager_preferences
2. 인수
<type name="Magento\Customer\Model\ResourceModel\Group" shared="false">
<arguments>
<argument name="groupManagement" xsi:type="object">Magento\Customer\Api\GroupManagementInterface\Proxy</argument>
</arguments>
</type>
위의 코드에서 우리는 객체를 인수로 보내고 있으며, "Proxy"클래스를 이름이 인 객체로 삽입하는 시스템을 말합니다 groupManagement
. 또한 기존 인수를 대체하기 위해 Arguments를 사용할 수도 있습니다.
http://alanstorm.com/magento_2_object_manager_argument_replacement
3. 플러그인
<type name="Magento\Customer\Model\ResourceModel\Visitor">
<plugin name="catalogLog" type="Magento\Catalog\Model\Plugin\Log" />
</type>
위의 코드 public function clean($object)
에서 방문자 클래스는 afterClean(Visitor $subject, $logResourceModel)
Log 클래스에있는 공용 함수 후에 호출 됩니다.
4 가지 가상 유형
가상 유형을 만드는 것은 기존 클래스의 하위 클래스를 만드는 것과 같습니다.
더 많은 참고를 위해 Alan의 링크로 언급 한 실제 사례를 살펴보십시오. 실제로 더 명확한 경험을 얻을 수 있습니다.
도움이 되었기를 바랍니다.... :)