Что-то, что я недавно заметил, и мне любопытно.
Пример 1: использование getEvent()
В Mage_Core_Model_Locale
в setLocale()
методе, событие отправляется:
Mage::dispatchEvent('core_locale_set_locale', array('locale'=>$this));
Наблюдатель от этого события bindLocale()
изMage_Adminhtml_Model_Observer
public function bindLocale($observer)
{
if ($locale=$observer->getEvent()->getLocale()) {
if ($choosedLocale = Mage::getSingleton('adminhtml/session')->getLocale()) {
$locale->setLocaleCode($choosedLocale);
}
}
return $this;
}
Итак, как вы можете видеть, чтобы получить локаль, мы сначала вызываем getEvent()
наблюдателя.
Пример 2: без getEvent()
В Mage_Wishlist_Block_Customer_Wishlist_Item_Options
в __construct()
методе, событие отправляется:
Mage::dispatchEvent('product_option_renderer_init', array('block' => $this));
Поэтому мы согласны с тем, что один и тот же синтаксис используется для примеров 1 и 2.
Тем не менее, наблюдатель для этого второго примера initOptionRenderer()
изMage_Bundle_Model_Observer
public function initOptionRenderer(Varien_Event_Observer $observer)
{
$block = $observer->getBlock();
$block->addOptionsRenderCfg('bundle', 'bundle/catalog_product_configuration');
return $this;
}
И, как вы можете видеть, чтобы получить блок, мы не вызываем getEvent()
наблюдателя
Вопрос
- Почему
getEvent()
метод вызывается в примере № 1? Или почемуgetEvent()
не вызывается в примере № 2? - Какова цель
getEvent()
метода? - Где следует использовать
getEvent()
и где не следует его использовать?