Magento - 获取调度事件的类


Magento - get class that dispatched an event

有没有办法获取在Magento中调度事件的类?

您可以使用以下代码获取正在调用的类,但是是否有相反的函数?

$observer->getEvent()->getBlock();

可悲的是,我认为没有办法做到这一点。Magento的活动通过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.phplib/Varien/Event/Observer.php中没有更多,这些类是Magento中事件/观察者模式中涉及的类。

虽然,有时,一个事件可能会给你$this作为他的数据,如这个例子:

./app/code/core/Mage/Wishlist/Model/Wishlist.php:222:  
Mage::dispatchEvent('wishlist_item_add_after', array('wishlist' => $this));

但是在应用程序设计中没有什么强迫它,所以你永远不知道。