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 = Mage::getSingleton('catalog/product');
$product2 = Mage::getSingleton('catalog/product');
$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 = Mage::getModel('catalog/product');
$product2 = Mage::getModel('catalog/product');
$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
Mage::getResourceModel()
or
Mage::getModel()->getCollection()
(說白了就是:
Mage::getResourceModel('module/model_collection')
相當于
Mage::getModel('module/model')->getCollection())
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.
參考:http://stackoverflow.com/a/21154019/602382
執行個體:Magento: 擷取客戶資訊 Get Customer’s Full Name, First Name, Last Name and Email Address
轉自:Magento: Mage::getResourceModel, Mage::getModel 和 Mage::getSingleton() 的差別 when to use Mage::getResourceModel, Mage::getModel and Mage::getSingleton()