Ning Ma blog

my technology tips

Magento: Difference between Mage::getSingleton() and Mage::getModel() in Magento

Some people ask about the difference between Mage::getModel() and Mage::getSingleton() in Magento.
Here is the difference between these two:

Mage::getModel(‘module/model’) will create a new instance of the model object (if such object exists in configuration)
So if we write:
Mage::getModel(‘catalog/product’), 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.

Leave a Reply

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