-
Notifications
You must be signed in to change notification settings - Fork 39
EventManager
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
Acl
Application
Auth
Cache
Common
— Exception
— Collection
— Container
— Helper
— Options
— Singleton
Config
Controller
— Data
— Mapper
—— Crud
—— Rest
— Reflection
Crud
— Crud Table
Db
— Row
— Table
— Relations
— Query
Debug
EventManager
Grid
Http
Layout
Logger
Mailer
Messages
Nil
Proxy
Registry
Request
Response
Router
Session
Translator
Validator
View