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
Model (* 1013)*), вы можете видеть, что getWeight
просто упаковывает вызовы типа getWeight
public function getWeight()
{
return $this->getTypeInstance(true)->getWeight($this);
}
. Это яркий пример объектно-ориентированного программирования в действии.
Итак, конец дня?Если вы не знаете, почему вам нужно использовать этот метод, вам не нужно использовать этот метод.