What is Difference between Mage::getModel() and Mage::getSingleton() in magento.?
Mage::getSingleton(): Mage::getSingleton(‘catalog/product’); will check the Object of the given model already exists and return that if it does. If it doesn’t exist, it will create a new object of the given model and keep in registry that it already exists. Next call will not return a new object but the existing one.
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); }
Mage::getModel() :
Mage::getModel(‘catalog/product’); is used when you want to get the fresh data from the database. Example: when you want to get records from database.
/** * 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); }
Difference between Mage::getModel() and Mage::getSingleton() in magento
The difference between Mage:getSingleton() and Mage::getModel() is that, Mage:getSingleton() will first check the same class instance is exits or not in registry if the object for same class is already exit,then it will return the same object from the memory. while Mage::getModel() creates new objects every time for the class when it’s class is called.