Hi friends,

Some people ask about the difference between

Mage::getModel() and Mage::getSingleton()

in Magento. Here is the difference between these two:


will create a new instance of the model object (if such object exists in configuration)
So if we write:


it will create new instance of the object product each time. So,

$p1 = Mage::getModel('catalog/product');
$p2 = Mage::getModel('catalog/product');

Then $p1 is a one instance of product and $p2 is another instance of product.

While Mage::getSingleton('catalog/product') will create reference on existing object (if object does not exist then this method will create an instance using ::getModel() and returns reference to it).
So, if

$p1 = Mage::getSingleton('catalog/product');
$p2 = Mage::getSingleton('catalog/product');

Then $p1 and $p2 both refer to the same instance of product as reference $p2.

That's all.. Cheers.. :)