最近気づいたこと、それについて知りたいです。
例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()
すべきか?