Использование “getTypeInstance ()” продукта в Magento

Кто-либо может поместить некоторый свет на потребность метода "getTypeInstance ()", который может быть использованием каким-либо объектом продукта?

Также, каковы профессионалы и недостатки использования этого метода?

8
задан Knowledge Craving 30 April 2012 в 09:33
поделиться

2 ответа

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);
}

Это яркий пример объектно-ориентированного программирования в действии.

Итак, конец дня? Если вы не знаете, зачем вам нужен этот метод, вам не нужно его использовать.

17
ответ дан 5 December 2019 в 07:56
поделиться

Вызов getTypeInstance вернет другой объект, в зависимости от того, какой тип продукта вы выбрали. Например, если вы выбрали пакетный продукт, экземпляр типа будет содержать информацию о связанных продуктах внутри него, информацию о том, как рассчитать динамический вес и т. Д.

Нет ничего плохого в использовании этого метода, если он имеет нужные вам данные.

Надеюсь, что это поможет.

Спасибо, Джо

4
ответ дан 5 December 2019 в 07:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: