Add Symfony inspired typed event dispatcher methodtags/v18.0.0beta1
@@ -31,6 +31,7 @@ use OCP\IContainer; | |||
use OCP\ILogger; | |||
use OCP\IServerContainer; | |||
use Symfony\Component\EventDispatcher\EventDispatcher as SymfonyDispatcher; | |||
use function get_class; | |||
class EventDispatcher implements IEventDispatcher { | |||
@@ -74,6 +75,10 @@ class EventDispatcher implements IEventDispatcher { | |||
$this->dispatcher->dispatch($event, $eventName); | |||
} | |||
public function dispatchTyped(Event $event): void { | |||
$this->dispatch(get_class($event), $event); | |||
} | |||
/** | |||
* @return SymfonyDispatcher | |||
*/ |
@@ -58,4 +58,16 @@ interface IEventDispatcher { | |||
*/ | |||
public function dispatch(string $eventName, Event $event): void; | |||
/** | |||
* Dispatch a typed event | |||
* | |||
* Only use this with subclasses of ``\OCP\EventDispatcher\Event``. | |||
* The object's class will determine the event name. | |||
* | |||
* @param Event $event | |||
* | |||
* @since 18.0.0 | |||
*/ | |||
public function dispatchTyped(Event $event): void; | |||
} |