Кто-либо может поместить некоторый свет на потребность метода "getTypeInstance ()", который может быть использованием каким-либо объектом продукта?
Также, каковы профессионалы и недостатки использования этого метода?
getTypeInstance позволяет получить объект, описывающий тип продукта, где type - это внутренний тип 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;
}
}
Этот метод имеет особые правила для определения веса продукта в комплекте.
Затем в каталоге / модели продукта
( Mage_Catalog_Model_Product
) вы можете увидеть, что getWeight
просто оборачивает вызовы к типу getWeight
public function getWeight()
{
return $this->getTypeInstance(true)->getWeight($this);
}
Это яркий пример объектно-ориентированного программирования в действии.
Итак, конец дня? Если вы не знаете, зачем вам нужен этот метод, вам не нужно его использовать.
Вызов getTypeInstance
вернет другой объект, в зависимости от того, какой тип продукта вы выбрали. Например, если вы выбрали пакетный продукт, экземпляр типа будет содержать информацию о связанных продуктах внутри него, информацию о том, как рассчитать динамический вес и т. Д.
Нет ничего плохого в использовании этого метода, если он имеет нужные вам данные.
Надеюсь, что это поможет.
Спасибо, Джо