Algo que noté recientemente y tengo curiosidad al respecto.
Ejemplo 1: el uso de getEvent()
En Mage_Core_Model_Locale
el setLocale()
método, se distribuye un evento:
Mage::dispatchEvent('core_locale_set_locale', array('locale'=>$this));
Un observador para este evento es 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;
}
Entonces, como puede ver, para recuperar la configuración regional, primero llamamos getEvent()
al observador.
Ejemplo 2: sin getEvent()
En Mage_Wishlist_Block_Customer_Wishlist_Item_Options
el __construct()
método, se distribuye un evento:
Mage::dispatchEvent('product_option_renderer_init', array('block' => $this));
Por lo tanto, estamos de acuerdo en que se usa la misma sintaxis para los ejemplos 1 y 2.
Sin embargo, un observador para este segundo ejemplo es initOptionRenderer()
deMage_Bundle_Model_Observer
public function initOptionRenderer(Varien_Event_Observer $observer)
{
$block = $observer->getBlock();
$block->addOptionsRenderCfg('bundle', 'bundle/catalog_product_configuration');
return $this;
}
Y como puede ver, para recuperar el bloque, no llamamos getEvent()
al observador
Pregunta
- ¿Por qué se
getEvent()
llama al método en el ejemplo 1? ¿O por quégetEvent()
no se llama en el ejemplo # 2? - ¿Cuál es el propósito del
getEvent()
método? - ¿Dónde se debe usar
getEvent()
y dónde no se debe usar?