Php 使用「;getTypeInstance();产品在Magento中的应用

Php 使用「;getTypeInstance();产品在Magento中的应用,php,oop,magento,Php,Oop,Magento,有谁能解释一下“getTypeInstance()”方法的需要吗?它可以被任何产品对象使用 另外,使用此方法的优缺点是什么?根据您选择的产品类型,getTypeInstance调用将返回不同的对象。例如,如果您选择了捆绑产品,则类型实例将包含关于其中捆绑产品的信息、关于如何计算动态权重的信息等 使用这种方法没有什么错,只要它有你需要的数据 希望有帮助 谢谢, JoegetTypeInstance允许您检索描述产品类型的对象,其中类型是内部magento类型。因此,您可以使用此方法确定产品是简单产

有谁能解释一下“getTypeInstance()”方法的需要吗?它可以被任何产品对象使用


另外,使用此方法的优缺点是什么?

根据您选择的产品类型,
getTypeInstance
调用将返回不同的对象。例如,如果您选择了捆绑产品,则类型实例将包含关于其中捆绑产品的信息、关于如何计算动态权重的信息等

使用这种方法没有什么错,只要它有你需要的数据

希望有帮助

谢谢,
Joe

getTypeInstance允许您检索描述产品类型的对象,其中类型是内部magento类型。因此,您可以使用此方法确定产品是简单产品、捆绑产品还是可配置产品,等等

然后,您可以使用这些对象来确定特定于产品类型的产品信息。例如,如果在捆绑产品对象上调用此方法,将得到一个类为的对象

Mage_Bundle_Model_Product_Type
这个类上有许多方法,这些方法是专门为处理捆绑产品而设计的。例如,您有
getWeight
方法

public function getWeight($product = null)
{
    if ($this->getProduct($product)->getData('weight_type')) {
        return $this->getProduct($product)->getData('weight');
    } else {
        $weight = 0;

        if ($this->getProduct($product)->hasCustomOptions()) {
            $customOption = $this->getProduct($product)->getCustomOption('bundle_selection_ids');
            $selectionIds = unserialize($customOption->getValue());
            $selections = $this->getSelectionsByIds($selectionIds, $product);
            foreach ($selections->getItems() as $selection) {
                $weight += $selection->getWeight();
            }
        }
        return $weight;
    }
}
该方法具有确定捆绑产品重量的特定规则

然后,在
catalog/product
模型(
Mage\u catalog\u Model\u product
)中,您可以看到
getWeight
只包装对类型的
getWeight
的调用

public function getWeight()
{
    return $this->getTypeInstance(true)->getWeight($this);
}
是面向对象编程的一个主要实例

那么,今天结束了吗?如果您不知道为什么需要使用此方法,则不需要使用此方法