Qualcosa che ho notato di recente e ne sono curioso.
Esempio 1: l'uso di getEvent()
Nel Mage_Core_Model_Locale
nel setLocale()
metodo, un evento viene inviato:
Mage::dispatchEvent('core_locale_set_locale', array('locale'=>$this));
Un osservatore per questo evento viene bindLocale()
daMage_Adminhtml_Model_Observer
public function bindLocale($observer)
{
if ($locale=$observer->getEvent()->getLocale()) {
if ($choosedLocale = Mage::getSingleton('adminhtml/session')->getLocale()) {
$locale->setLocaleCode($choosedLocale);
}
}
return $this;
}
Come puoi vedere, per recuperare la localizzazione, chiamiamo prima getEvent()
l'osservatore.
Esempio 2: senza getEvent()
Nel Mage_Wishlist_Block_Customer_Wishlist_Item_Options
nel __construct()
metodo, un evento viene inviato:
Mage::dispatchEvent('product_option_renderer_init', array('block' => $this));
Quindi concordiamo che la stessa sintassi viene utilizzata per gli esempi 1 e 2.
Tuttavia, un osservatore per questo secondo esempio viene initOptionRenderer()
daMage_Bundle_Model_Observer
public function initOptionRenderer(Varien_Event_Observer $observer)
{
$block = $observer->getBlock();
$block->addOptionsRenderCfg('bundle', 'bundle/catalog_product_configuration');
return $this;
}
E come puoi vedere, per recuperare il blocco, non chiamiamo getEvent()
l'osservatore
Domanda
- Perché il
getEvent()
metodo è chiamato nell'esempio n. 1? O perchégetEvent()
non viene chiamato nell'esempio n. 2? - Qual è lo scopo del
getEvent()
metodo? - Dove si dovrebbe usare
getEvent()
e dove non si dovrebbe usare?