- Basic event manager middleware

This commit is contained in:
Dave Mc Nicoll committed 2023-05-30 15:40:31 -04:00
1 parent 4d73913bef
commit f36228b7a6
4 files changed
+45 -4

No files matched your search

+12 -4
View File
@@ -29,17 +29,25 @@ class EventManager
public function eventFromName(string $name) : array
{
return array_filter($this->eventList, fn($ev) => $ev->name === $name);
return array_filter($this->eventList, fn($ev) => property_exists($ev, 'name') && $ev->name === $name);
}
public function execute(string $name, ...$arguments) : void
public function execute(string $name, &...$arguments) : void
{
$continue = true;
foreach($this->eventFromName($name) as $event) {
$event->execute($this->container, ...$arguments);
if ($continue) {
$event->execute($this->container, ...$arguments);
$continue = empty($event->stopPropagation);
}
}
foreach($this->eventfromType($name) as $event) {
call_user_func_array([ $event, 'execute'], $arguments);
if ($continue) {
call_user_func_array([ $event, 'execute'], $arguments);
$continue = empty($event->stopPropagation);
}
}
}
}