Quelque chose que j'ai remarqué récemment et qui m'intéresse.
Exemple 1: l'utilisation de getEvent()
Dans Mage_Core_Model_Locale
la setLocale()
méthode, un événement est distribué:
Mage::dispatchEvent('core_locale_set_locale', array('locale'=>$this));
Un observateur de cet événement est 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;
}
Comme vous pouvez le voir, pour récupérer les paramètres régionaux, nous faisons d'abord appel getEvent()
à l'observateur.
Exemple 2: sans getEvent()
Dans Mage_Wishlist_Block_Customer_Wishlist_Item_Options
la __construct()
méthode, un événement est distribué:
Mage::dispatchEvent('product_option_renderer_init', array('block' => $this));
Nous convenons donc que la même syntaxe est utilisée pour les exemples 1 et 2.
Cependant, un observateur de ce deuxième exemple vient initOptionRenderer()
deMage_Bundle_Model_Observer
public function initOptionRenderer(Varien_Event_Observer $observer)
{
$block = $observer->getBlock();
$block->addOptionsRenderCfg('bundle', 'bundle/catalog_product_configuration');
return $this;
}
Et comme vous pouvez le voir, pour récupérer le bloc, nous ne faisons pas appel getEvent()
à l'observateur
Question
- Pourquoi la
getEvent()
méthode est-elle appelée dans l'exemple # 1? Ou pourquoi n'est-ilgetEvent()
pas appelé dans l'exemple # 2? - Quel est le but de la
getEvent()
méthode? - Où doit-on l'utiliser
getEvent()
et où ne doit-on pas l'utiliser?