本文整理汇总了PHP中Cake\Event\EventManager::dispatch方法的典型用法代码示例。如果您正苦于以下问题:PHP EventManager::dispatch方法的具体用法?PHP EventManager::dispatch怎么用?PHP EventManager::dispatch使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Cake\Event\EventManager
的用法示例。
在下文中一共展示了EventManager::dispatch方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: trigger
/**
* {@inheritDoc}
*/
public function trigger(EventInterface $event)
{
if ($event instanceof BaseCakeEvent) {
$this->eventManager->dispatch($event);
}
return $this;
}
示例2: getLoader
/**
* Create the template loader.
*
* @return \Twig_LoaderInterface
*/
protected function getLoader()
{
$event = new Event('TwigView.TwigView.loader', $this, ['loader' => new Loader()]);
$this->eventManager->dispatch($event);
if (isset($event->result['loader'])) {
return $event->result['loader'];
}
return $event->data['loader'];
}
示例3: triggerArray
/**
* Similar to "trigger()" but this method expects that data is given as an
* associative array instead of function arguments.
*
* ### Usage:
*
* ```php
* EventDispatcher::instance()->triggerArray('myEvent', [$data1, $data2]);
* ```
*
* Which is equivalent to:
*
* ```php
* EventDispatcher::instance()->trigger('myEvent', $data1, $data2);
* ```
*
* @param array|string $eventName The event name to trigger
* @param array $data Information to be passed to event listener
* @return \Cake\Event\Event The event object that was triggered
*/
public function triggerArray($eventName, array $data = [])
{
$event = $this->_prepareEvent($eventName, $data);
$this->_log($event->name());
$this->_eventManager->dispatch($event);
return $event;
}
示例4: trigger
/**
* Triggers a Crud event by creating a new subject and filling it with $data
* if $data is an instance of CrudSubject it will be reused as the subject
* object for this event.
*
* If Event listeners return a CakeResponse object, the this method will throw an
* exception and fill a 'response' property on it with a reference to the response
* object.
*
* @param string $eventName Event name
* @param \Crud\Event\Subject $data Event data
* @throws Exception if any event listener return a CakeResponse object.
* @return \Cake\Event\Event
*/
public function trigger($eventName, Subject $data = null)
{
$eventName = $this->_config['eventPrefix'] . '.' . $eventName;
$Subject = $data ?: $this->getSubject();
$Subject->addEvent($eventName);
if (!empty($this->_config['eventLogging'])) {
$this->logEvent($eventName, $data);
}
$Event = new Event($eventName, $Subject);
$this->_eventManager->dispatch($Event);
if ($Event->result instanceof Response) {
$Exception = new Exception();
$Exception->response = $Event->result;
throw $Exception;
}
return $Event;
}
示例5: testDispatchWithGlobalAndLocalEvents
/**
* Test that events are dispatched properly when there are global and local
* listeners at the same priority.
*
* @return void
*/
public function testDispatchWithGlobalAndLocalEvents()
{
$listener = new CustomTestEventListener();
EventManager::instance()->attach($listener);
$listener2 = new EventTestListener();
$manager = new EventManager();
$manager->attach(array($listener2, 'listenerFunction'), 'fake.event');
$manager->dispatch(new Event('fake.event', $this));
$this->assertEquals(array('listenerFunction'), $listener->callStack);
$this->assertEquals(array('listenerFunction'), $listener2->callStack);
}
示例6: getLoader
/**
* Create the template loader.
*
* @return \Twig_LoaderInterface
*/
protected function getLoader()
{
$event = LoaderEvent::create(new Loader());
$this->eventManager->dispatch($event);
return $event->getResultLoader();
}
示例7: dispatch
public function dispatch($event)
{
$this->_log[] = ['name' => $event->name(), 'subject' => $event->subject()];
parent::dispatch($event);
}
示例8: testGetDispatchedEvents
/**
* Test getting a list of dispatched events from the manager.
*
* @return void
* @triggers my_event $this
* @triggers my_second_event $this
*/
public function testGetDispatchedEvents()
{
$eventList = new EventList();
$event = new Event('my_event', $this);
$event2 = new Event('my_second_event', $this);
$manager = new EventManager();
$manager->setEventList($eventList);
$manager->dispatch($event);
$manager->dispatch($event2);
$result = $manager->getEventList();
$this->assertInstanceOf('\\Cake\\Event\\EventList', $result);
$this->assertCount(2, $result);
$this->assertEquals($result[0], $event);
$this->assertEquals($result[1], $event2);
$manager->getEventList()->flush();
$result = $manager->getEventList();
$this->assertCount(0, $result);
$manager->unsetEventList();
$manager->dispatch($event);
$manager->dispatch($event2);
$result = $manager->getEventList();
$this->assertNull($result);
}
示例9: testEventFired
/**
* tests assertEventFired
*
* @return void
*/
public function testEventFired()
{
$manager = EventManager::instance();
$manager->setEventList(new EventList());
$manager->trackEvents(true);
$event = new Event('my.event');
$manager->dispatch($event);
$this->assertEventFired('my.event');
$manager = new EventManager();
$manager->setEventList(new EventList());
$manager->trackEvents(true);
$event = new Event('my.event');
$manager->dispatch($event);
$this->assertEventFired('my.event', $manager);
}