public function doFireEvent(IEntity $entity, $event) { if (!property_exists($this, $event)) { throw new InvalidArgumentException("Event '{$event}' is not defined."); } $entity->fireEvent($event); ObjectMixin::call($this, $event, [$entity]); }