Magento - 获取发送事件的 class
Magento - get class that dispatched an event
有没有办法获取在 Magento 中调度事件的 class?
你可以通过下面的代码得到正在调用的class,但是有相反的功能吗?
$observer->getEvent()->getBlock();
遗憾的是,我认为没有办法做到这一点。
Magento 中的事件通过 Mage::dispatchEvent()
发送
这个函数的定义可以在app/Mage.php
第445行
附近找到
/**
* 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 中没有任何强制 class 正在调度事件来说明自身的任何内容。
在 lib/Varien/Event.php
或 lib/Varien/Event/Observer.php
中仅此而已,它们是 Magento 中 event/observer 模式中涉及的 classes。
虽然,有时候,一个事件可能会给你 $this
作为他的数据,就像这个例子:
./app/code/core/Mage/Wishlist/Model/Wishlist.php:222:
Mage::dispatchEvent('wishlist_item_add_after', array('wishlist' => $this));
但在应用程序设计中没有任何强制要求,因此您永远不会知道。
有没有办法获取在 Magento 中调度事件的 class?
你可以通过下面的代码得到正在调用的class,但是有相反的功能吗?
$observer->getEvent()->getBlock();
遗憾的是,我认为没有办法做到这一点。
Magento 中的事件通过 Mage::dispatchEvent()
这个函数的定义可以在app/Mage.php
第445行
/**
* 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 中没有任何强制 class 正在调度事件来说明自身的任何内容。
在 lib/Varien/Event.php
或 lib/Varien/Event/Observer.php
中仅此而已,它们是 Magento 中 event/observer 模式中涉及的 classes。
虽然,有时候,一个事件可能会给你 $this
作为他的数据,就像这个例子:
./app/code/core/Mage/Wishlist/Model/Wishlist.php:222:
Mage::dispatchEvent('wishlist_item_add_after', array('wishlist' => $this));
但在应用程序设计中没有任何强制要求,因此您永远不会知道。