3v4l.org

run code in 300+ PHP versions simultaneously
<?php class EventBus { public function addEventListener(Listener $listener) { $this->listeners[] = $listener; } public function dispatch(Event ...$events) { foreach($events as $event){ foreach($this->listeners as $listener){ $listener->when($event); } } } } abstract class Listener { public function __construct(EventBus $bus) { $bus->addEventListener($this); } public function when(Event $event) { $method = explode('\\', get_class($event)); $method = 'on' . end($method); if (method_exists($this, $method)) { $this->$method($event); } } } class SendEmailListener extends Listener { public function onMemberRegistered(Event $event) { // send email } } $eventBus = new EventBus; $emailSender = new SendEmailListener($eventBus);
Output for 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
Deprecated: Creation of dynamic property EventBus::$listeners is deprecated in /in/A91fe on line 7
Output for 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27

preferences:
182 ms | 402 KiB | 167 Q