我在magento2教程中同时使用了插件和首选项,两者都工作正常,但是它们之间的基本区别是什么。
插件代码:
1.1)在di.xml中添加一个插件声明:
<type name="Magento\Catalog\Model\Product">
<plugin name="magento-catalog-product-plugin" type="Training\Test\Model\Product" sortOrder="10"/>
</type>
1.2)创建一个插件类:
<?php
namespace Training\Test\Model;
class Product {
public function afterGetPrice(\Magento\Catalog\Model\Product $product, $result) {
return 5;
}
}
偏好代码:
2.1)创建一个首选项声明:
<preference for="Magento\Catalog\Model\Product"
type="Training\Test\Model\Testproduct" />
2.2)创建一个新的产品类:
<?php
namespace Training\Test\Model;
class Testproduct extends \Magento\Catalog\Model\Product
{
public function getPrice() {
return 3;
}
}