有没有办法获得在Magento中调度事件的类?
您可以使用以下代码获取正在调用的类,但是是否存在相反的函数?
$observer->getEvent()->getBlock();
答案 0 :(得分:2)
Mage::dispatchEvent()
发送
此功能的定义可在第445行的app/Mage.php
/**
* Dispatch event
*
* Calls all observer callbacks registered for this event
* and multiple observers matching event name pattern
*
* @param string $name
* @param array $data
* @return Mage_Core_Model_App
*/
public static function dispatchEvent($name, array $data = array())
{
Varien_Profiler::start('DISPATCH EVENT:'.$name);
$result = self::app()->dispatchEvent($name, $data);
Varien_Profiler::stop('DISPATCH EVENT:'.$name);
return $result;
}
正如你所看到的那样,Magento中没有任何东西迫使一个派遣一个事件的班级对自己说些什么。
在lib/Varien/Event.php
或lib/Varien/Event/Observer.php
中,Magento中的事件/观察者模式所涉及的类中没有更多内容。
虽然有时候某个事件可能会为您提供$this
作为他的数据,例如:
./app/code/core/Mage/Wishlist/Model/Wishlist.php:222:
Mage::dispatchEvent('wishlist_item_add_after', array('wishlist' => $this));
但是在应用程序设计中没有强制它,所以你永远不会知道。