I just started to use Magento, and in particular on how models and the ORM work.
I have used these three methods
Mage::getResourceModel()
Mage::getModel()
Mage::getSingleton()
Can anyone tell me what the difference is between each of them?
I have found that getSingleton()
shares memory while getModel()
uses fresh memory for new object for the same table being loaded.
I have used all the methods above but could not differentiate between them and when is appropriate to use which one.
Best Answer
Perfect differece with example for getsingleton and getmodel.
Mage::getSingleton()
Mage::getSingleton() will first check if the same class instance exists or not in the memory. If the instance exists then it will return the same object from the memory. So Mage::getSingleton() is faster than Mage::getModel().
Example
$product1 and $product2 both will share same memory of OS and return only one instance each time.
Mage::getModel()
Mage::getModel() will create a new instance of an object each time even such object exists in configuration.
Example
$product1 and $product2 both have different instant of same object and also occupy different memory
Mage::getResourceModel()
As far as I know, all collections in Magento are resource models. They are instantiated by
or
It doesn't really matter which function you use; the latter one simply calls the first one. The Magento team simply chose to make collections part of the resource, probably because collections need to query the database a lot. Usually, you will not have to call
Mage::getResourceModel()
for anything else than collections.good post by balajimca