Sesuatu yang saya perhatikan baru-baru ini dan saya ingin tahu tentang hal itu.
Contoh 1: penggunaan getEvent()
Di Mage_Core_Model_Localedalam setLocale()metode, sebuah acara dikirim:
Mage::dispatchEvent('core_locale_set_locale', array('locale'=>$this));
Pengamat untuk acara ini bindLocale()berasal dariMage_Adminhtml_Model_Observer
public function bindLocale($observer)
{
if ($locale=$observer->getEvent()->getLocale()) {
if ($choosedLocale = Mage::getSingleton('adminhtml/session')->getLocale()) {
$locale->setLocaleCode($choosedLocale);
}
}
return $this;
}
Jadi seperti yang Anda lihat, untuk mengambil lokasi, pertama-tama kita memanggil getEvent()pengamat.
Contoh 2: tanpa getEvent()
Di Mage_Wishlist_Block_Customer_Wishlist_Item_Optionsdalam __construct()metode, sebuah acara dikirim:
Mage::dispatchEvent('product_option_renderer_init', array('block' => $this));
Jadi kami setuju bahwa sintaks yang sama digunakan untuk contoh 1 dan 2.
Namun, pengamat untuk contoh kedua ini initOptionRenderer()dariMage_Bundle_Model_Observer
public function initOptionRenderer(Varien_Event_Observer $observer)
{
$block = $observer->getBlock();
$block->addOptionsRenderCfg('bundle', 'bundle/catalog_product_configuration');
return $this;
}
Dan seperti yang Anda lihat, untuk mengambil blok, kami tidak memanggil getEvent()pengamat
Pertanyaan
- Mengapa
getEvent()metode ini disebut dalam contoh # 1? Atau mengapagetEvent()tidak disebut dalam contoh # 2? - Apa tujuan dari
getEvent()metode ini? - Di mana satu harus digunakan
getEvent()dan di mana seharusnya tidak menggunakannya?