trait a { protected $listeners; public function on() { $this->listeners = [123]; return $this->listeners; } } class b { use a; } $b = new b(); var_dump($b->on()); class event { use \Evenement\EventEmitterTrait; } $event = new event(); var_dump($event); $event->on('key1', function ($msg) { echo "key1 event: \n"; var_dump($msg); }); $event->on('key2', function ($val) { return $val + 1; }); class env {