Czy ktokolwiek może rzucić trochę światła na potrzebę metody "getTypeInstance()", która może być używana przez dowolny obiekt produktu?Używanie "getTypeInstance()" produktu w Magento
Jakie są zalety korzystania z tej metody?
Czy ktokolwiek może rzucić trochę światła na potrzebę metody "getTypeInstance()", która może być używana przez dowolny obiekt produktu?Używanie "getTypeInstance()" produktu w Magento
Jakie są zalety korzystania z tej metody?
getTypeInstance pozwala pobrać obiekt, który opisuje typ produktu, gdzie typ jest wewnętrzny typ Magento. Tak więc możesz użyć tej metody, aby określić, czy produkt jest produktem prostym, produktem pakietowanym, produktem konfigurowalnym itp.
Możesz następnie użyć tych obiektów do określenia informacji o produkcie, który jest specyficzny dla danego produktu. Na przykład, jeśli wywołanie tej metody na dołączonym obiektu produktów, dostaniesz obiekt, którego klasa jest
Mage_Bundle_Model_Product_Type
Ta klasa ma kilka sposobów na to, które zostały zaprojektowane specjalnie do czynienia z wiązanych produktów. Na przykład, masz getWeight
metoda
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;
}
}
Ta metoda ma szczególne przepisy dotyczące ustalania ciężar dołączonego produktu.
Następnie w catalog/product
modelu (Mage_Catalog_Model_Product
), można zobaczyć, że getWeight
tylko owija połączenia z typem za getWeight
public function getWeight()
{
return $this->getTypeInstance(true)->getWeight($this);
}
IS najlepszym przykładem Object Oriented Programming w akcji.
Koniec dnia? Jeśli nie wiesz, dlaczego musisz korzystać z tej metody, nie musisz używać tej metody.
Wywołanie getTypeInstance
zwróci inny obiekt, w zależności od wybranego typu produktu. Na przykład, jeśli wybierzesz produkt pakowany, instancja typu będzie zawierała informacje o produktach w pakiecie, informacje o tym, jak obliczyć masę dynamiczną, itp.
Nie ma nic złego w używaniu tej metody, o ile ma potrzebne dane.
Nadzieję, że pomaga.
Dzięki Joe
Dzięki Alan, za tak wspaniałe wyjaśnienie. –