security = $security; } public function getSubscribedEvents() { return [ Events::prePersist, Events::preUpdate, ]; } public function prePersist(LifecycleEventArgs $args): void { $object = $args->getObject(); if ( $object instanceof TrackCreationInterface && $this->security->getUser() instanceof User ) { $object->setCreatedBy($this->security->getUser()); $object->setCreatedAt(new DateTimeImmutable('now')); } $this->onUpdate($object); } public function preUpdate(LifecycleEventArgs $args): void { $object = $args->getObject(); $this->onUpdate($object); } protected function onUpdate(object $object): void { if ( $object instanceof TrackUpdateInterface && $this->security->getUser() instanceof User ) { $object->setUpdatedBy($this->security->getUser()); $object->setUpdatedAt(new DateTimeImmutable('now')); } } }