EventManager
Описание
Менеджер событий - ничего военного, но использовать следует с крайней осторожностью, т.к. поведение подобного рода очень непрозрачно!
Настройки
Глобальных настроек нет
Использование
с версии 0.6.0 изменился способ вызова - теперь только через Proxy
Добавляем обработчик события testevent:
EventManager::attach('testevent', function(Event $event){ return $event->getTarget()*2; }); EventManager::attach('testevent', function(Event $event){ return $event->getTarget()*2; });
Добавляем обработчик событий event и event2 в пространстве testspace:
EventManager::attach('testspace:event', function(Event $event){ return $event->getTarget()+4; }); EventManager::attach('testspace:event', function(Event $event){ return $event->getTarget()+2; }); EventManager::attach('testspace:event2', function(Event $event){ $event->setTarget($event->getTarget()+5); return false; // stop propagation }); EventManager::attach('testspace:event2', function(Event $event){ echo "Never run"; }); EventManager::attach('testspace', function(Event $event){ return $event->getTarget()+1; });
Инициируем события:
$res1 = EventManager::trigger('testevent', 1, array(1,2,3)); // 1*2*2 = 4 $res2 = EventManager::trigger('testspace:event', 1, array(1,2,3)); // 1+1+4+2 = 8 $res3 = EventManager::trigger('testspace:event2', 1, array(1,2,3)); // 1+1+5 = 7