Использование «getTypeInstance ()» продукта в Magento - PullRequest
7 голосов
/ 29 июня 2010

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

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

Ответы [ 2 ]

16 голосов
/ 29 июня 2010

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

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

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

4 голосов
/ 29 июня 2010

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

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

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

Спасибо, Джо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...