Didalam pemrograman Magento seperti pada framework pada umumnya, ada pemanggilan model. Namun saking banyaknya cara untuk memanggil model di magento, terdapat beberapa fungsi yang hampir sama namun ternyata ada porsi atau ketentuannya masing-masing.
Fungsi getSingleton
Berikut ini adalah cara memanggil getSingleton.
Mage::getSingleton()
Fungsi get singleton pada dasarnya akan memeriksa terlebih dahulu, apakah model atau kelas yang dipangging sudah terinstansiasi di memori atau belum. Jik sudah ada, maka objek yang ada dimemori akan dikembalikan dari memori. Jadi, sudah pasti fungsi ini memiliki kecepatan dan penghematan dalam penggunaan memori.
Adapun ilustrasi dari penggunaan getSingleton magento.
$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.
Fungsi getModel
Berikut ini adalah fungsi getModel.
Mage::getModel()
Berbeda dengan getSingleton, getModel akan selalu instansiasi objek baru untuk setiap model yang dipanggilnya. Hal ini biasanya digunakan untuk perbandingan dua result yang berbeda, sehingga tetap menghasilkan result yang kredibel.
Adapun ilustrasi dari penggunaan getModel magento.
$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
Fungsi getResourceModel
Berikut ini adalah kode untuk memanggil getResourceModel.
Mage::getResourceModel()
Penggunaan fungsi getResourceModel merupakan fungsi yang akan digunakan untuk memanggil koleksi data dari setiap resource model. Biasanya digunakan oleh Mage::getResourceModel() atau Mage::getModel()->getCollection().
Tidak masalah fungsi yang mana yang akan anda gunakan. Yang penting hasilnya bisa sama. Tim developer magento sudah mempermudahnya supaya semua koleksi (collection result) ada didalam kelas getResourceModel(). Mungkin salah satu alasan karena didalam koleksi terlalu banyak query sehingga didalam resource model sudah disatukan. Yang penting, jangan pernah memanggil getResourceModel jika bukan untuk dipergunakan menarik koleksi.
Demikian semoga membantu.
Sumber: stackoverflow. Alan Strom Blog.