Mage::getModel() 将始终为给定模型返回一个新对象:
/**
* Retrieve model object
*
* @link Mage_Core_Model_Config::getModelInstance
* @param string $modelClass
* @param array|object $arguments
* @return Mage_Core_Model_Abstract|false
*/
public static function getModel($modelClass = '', $arguments = array())
{
return self::getConfig()->getModelInstance($modelClass, $arguments);
}
Mage::getSingleton() 将检查给定模型的对象是否已经存在,如果存在则返回。如果它不存在,它将创建给定模型的新对象并将其放入已存在的注册表中。下一次调用不会返回新对象,而是返回现有对象:
/**
* Retrieve model object singleton
*
* @param string $modelClass
* @param array $arguments
* @return Mage_Core_Model_Abstract
*/
public static function getSingleton($modelClass='', array $arguments=array())
{
$registryKey = '_singleton/'.$modelClass;
if (!self::registry($registryKey)) {
self::register($registryKey, self::getModel($modelClass, $arguments));
}
return self::registry($registryKey);
}
在您的情况下,您总是想要一个全新的产品对象/模型,因为每个产品都是独一无二的......