Per semplificare non è altro che una classe con unica istanza accessibile da una qualsiasi posizione. In Magento, questo si basa sull’utilizzo del pattern Registry, descritto qui, ed è usato ad esempio per gestire le sessioni sia lato frontend che backend.
Ad esempio, se volessimo verificare che un cliente sia loggato sul frontend, useremo l’istruzione
Mage::getSingleton('customer/session')->isLoggedIn()
e in caso affermativo possiamo caricare i suoi dati tramite
$customer = Mage::getSingleton('customer/session')->getCustomer()
Se invece fossimo nel backend, cambia la classe che gestisce le sessione e di conseguenza cambia il parametro da passare
$user = Mage::getSingleton('admin/session')->getUser()
Altro esempio è quello delle variabili di sessione. Con setData e getData possiamo rispettivamente settare e caricare una variabile personalizzata.
Mage::getSingleton('core/session')->setData('my_var', 'test')
Mage::getSingleton('core/session')->getData('my_var')