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.


You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *