Etwas, das mir kürzlich aufgefallen ist und auf das ich neugierig bin.
Beispiel 1: die Verwendung von getEvent()
In Mage_Core_Model_Locale
der setLocale()
Methode wird ein Ereignis ausgelöst:
Mage::dispatchEvent('core_locale_set_locale', array('locale'=>$this));
Ein Beobachter für dieses Ereignis ist bindLocale()
vonMage_Adminhtml_Model_Observer
public function bindLocale($observer)
{
if ($locale=$observer->getEvent()->getLocale()) {
if ($choosedLocale = Mage::getSingleton('adminhtml/session')->getLocale()) {
$locale->setLocaleCode($choosedLocale);
}
}
return $this;
}
Wie Sie sehen können, rufen wir zuerst getEvent()
den Beobachter auf, um das Gebietsschema abzurufen .
Beispiel 2: ohne getEvent()
In Mage_Wishlist_Block_Customer_Wishlist_Item_Options
der __construct()
Methode wird ein Ereignis ausgelöst:
Mage::dispatchEvent('product_option_renderer_init', array('block' => $this));
Wir sind uns also einig, dass zum Beispiel 1 und 2 dieselbe Syntax verwendet wird.
Ein Beobachter für dieses zweite Beispiel stammt jedoch initOptionRenderer()
ausMage_Bundle_Model_Observer
public function initOptionRenderer(Varien_Event_Observer $observer)
{
$block = $observer->getBlock();
$block->addOptionsRenderCfg('bundle', 'bundle/catalog_product_configuration');
return $this;
}
Und wie Sie sehen, rufen wir den Beobachter nicht an , um den Block abzurufengetEvent()
Frage
- Warum wird die
getEvent()
Methode in Beispiel 1 aufgerufen? Oder warum wirdgetEvent()
in Beispiel 2 nicht aufgerufen? - Was ist der Zweck der
getEvent()
Methode? - Wo soll man es verwenden
getEvent()
und wo sollte man es nicht verwenden?