コード例 #1
0
ファイル: events.php プロジェクト: rchavik/infinitas
 /**
  * Dispatch Event
  *
  * @param string $eventName
  * @param array $data (optional)
  * @return array
  *
  */
 private function __dispatchEvent(&$HandlerObject, $scope, $eventName, $data = array())
 {
     $eventHandlerMethod = EventCore::__handlerMethodName($eventName);
     $_this =& EventCore::getInstance();
     $return = array();
     if (isset($_this->__eventHandlerCache[$eventName])) {
         foreach ($_this->__eventHandlerCache[$eventName] as $eventClass) {
             $pluginName = EventCore::__extractPluginName($eventClass);
             if ($scope == 'Global' || $scope == $pluginName) {
                 if (!isset($_this->__eventClasses[$eventClass]) || !is_object($_this->__eventClasses[$eventClass])) {
                     EventCore::__loadEventClass($eventClass);
                 }
                 $EventObject = $_this->__eventClasses[$eventClass];
                 //$Event = new Event($eventName, $HandlerObject, $pluginName, $data);
                 $Event = new Event($eventName, $HandlerObject, $pluginName);
                 $return[$pluginName] = call_user_func_array(array(&$EventObject, $eventHandlerMethod), array(&$Event, $data));
             }
         }
     }
     return $return;
 }