Yanıtlar:
What case We use di.xml ?
Magento 2 müşteri modülünden kısa bir örnek verelim.
1.Preference
<preference for="Magento\Customer\Api\AddressRepositoryInterface"
type="Magento\Customer\Model\ResourceModel\AddressRepository" />
Kodun üstünde, birisi sizden bir örnek oluşturmanızı istediğinde, Magento\Customer\Api\AddressRepositoryInterface
bir Magento \ Customer \ Model \ ResourceModel \ AddressRepository nesnesini (type özniteliği) başlatır.
Sınıf tercihi yapılandırması sadece arayüzler için değil, gerçek sınıfları da değiştirebiliriz.
<preference for="Magento\Customer\Model\CustomerManagement"
type="Magento\Customer\Model\customModel" />
'CustomerManagement' için 'customModel' sınıfı oluşturabilir ve değişiklikleri yapabilirsiniz. Sınıf yeniden yazma sisteminin yerine sınıf tercih sistemi.
http://alanstorm.com/magento_2_object_manager_preferences
2. Tartışmalar
<type name="Magento\Customer\Model\ResourceModel\Group" shared="false">
<arguments>
<argument name="groupManagement" xsi:type="object">Magento\Customer\Api\GroupManagementInterface\Proxy</argument>
</arguments>
</type>
Yukarıdaki kodda, bağımsız değişken olarak nesne gönderiyoruz, sistemin adını "Proxy" sınıfına bir nesne olarak eklemek için diyoruz groupManagement
. Ayrıca, Argümanları mevcut argümanı değiştirmek için de kullanabiliriz.
http://alanstorm.com/magento_2_object_manager_argument_replacement
3. Eklenti
<type name="Magento\Customer\Model\ResourceModel\Visitor">
<plugin name="catalogLog" type="Magento\Catalog\Model\Plugin\Log" />
</type>
Yukarıdaki kodda, public function clean($object)
ziyaretçi sınıfında afterClean(Visitor $subject, $logResourceModel)
Log sınıfındaki ortak işlevden sonra çağrılır .
4 Sanal Tür
Sanal tür oluşturmak, varolan bir sınıf için bir alt sınıf oluşturmak gibidir.
Daha fazla not için lütfen Alan'dan bağlantılar olarak bahsettiğim bazı pratik örnekleri inceleyin, pratikte daha net bir deneyim elde edebilirsiniz.
Bu yardımcı olur umarım.... :)