Algo que notei recentemente e estou curioso sobre isso.
Exemplo 1: o uso de getEvent()
Em Mage_Core_Model_Locale
no setLocale()
método, um evento é enviado:
Mage::dispatchEvent('core_locale_set_locale', array('locale'=>$this));
Um observador para este evento é bindLocale()
deMage_Adminhtml_Model_Observer
public function bindLocale($observer)
{
if ($locale=$observer->getEvent()->getLocale()) {
if ($choosedLocale = Mage::getSingleton('adminhtml/session')->getLocale()) {
$locale->setLocaleCode($choosedLocale);
}
}
return $this;
}
Então, como você pode ver, para recuperar o código do idioma, primeiro chamamos getEvent()
o observador.
Exemplo 2: sem getEvent()
Em Mage_Wishlist_Block_Customer_Wishlist_Item_Options
no __construct()
método, um evento é enviado:
Mage::dispatchEvent('product_option_renderer_init', array('block' => $this));
Portanto, concordamos que a mesma sintaxe é usada nos exemplos 1 e 2.
No entanto, um observador para este segundo exemplo é initOptionRenderer()
deMage_Bundle_Model_Observer
public function initOptionRenderer(Varien_Event_Observer $observer)
{
$block = $observer->getBlock();
$block->addOptionsRenderCfg('bundle', 'bundle/catalog_product_configuration');
return $this;
}
E como você pode ver, para recuperar o bloco, não chamamos getEvent()
o observador
Questão
- Por que o
getEvent()
método é chamado no exemplo # 1? Ou por quegetEvent()
não é chamado no exemplo # 2? - Qual é o objetivo do
getEvent()
método? - Onde se deve usar
getEvent()
e onde não se deve usá-lo?