我有一个关于理解di.xml中使用的接口<preference>
和<type>
属性的查询。在哪些情况下,我们应该使用<preference>
和<type>
?在逻辑实现方面是否存在任何重大差异。
例如,转到app / code / Magento / Catalog / etc / di.xml,会有很多实例使用<preference>
和<type>
标签。我们究竟能如何区分它们?
期待听到想法。
答案 0 :(得分:2)
您可以从此处了解并获取更多信息:http://www.eschrade.com/page/basic-configuring-the-magento-2-dependency-injection-container/
答案 1 :(得分:1)
<preference>
用于indicate which concrete class you want the DI framework to supply when that type is requested。
<type>
用于几个不同的东西,其中一个是提供或覆盖注入到具体类型的构造函数中的参数。 <type>
声明也是used to declare plugins。
您在<preference>
和<type>
中看到界面的时间是为该界面定义插件的时间。 <type>
允许您在该对象类型上声明一个插件,无论它是具体类还是接口。
来自app/code/Magento/Catalog/etc/di.xml
的示例:
<preference for="Magento\Catalog\Api\ProductRepositoryInterface" type="Magento\Catalog\Model\ProductRepository" />
...
<type name="Magento\Catalog\Api\ProductRepositoryInterface">
<plugin name="transactionWrapper" type="\Magento\Catalog\Model\Plugin\ProductRepository\TransactionWrapper" sortOrder="-1"/>
</type>