Skip to content
AntonShevchuk edited this page Oct 6, 2014 · 9 revisions

Описание

Менеджер событий - ничего военного, но использовать следует с крайней осторожностью, т.к. поведение подобного рода очень непрозрачно!

Настройки

Глобальных настроек нет

Использование

с версии 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
Clone this wiki locally