attach($this->getEventManager(), $priority); } /** * {@inheritDoc} */ public function extract(object $object): array { $event = new ExtractEvent($this, $object); $this->getEventManager()->triggerEvent($event); return $event->getExtractedData(); } /** * {@inheritDoc} */ public function hydrate(array $data, object $object) { $event = new HydrateEvent($this, $object, $data); $this->getEventManager()->triggerEvent($event); return $event->getHydratedObject(); } /** * {@inheritDoc} */ public function setEventManager(EventManagerInterface $eventManager): void { $eventManager->setIdentifiers([self::class, static::class]); $this->eventManager = $eventManager; } /** * {@inheritDoc} */ public function getEventManager(): EventManagerInterface { if (null === $this->eventManager) { $this->setEventManager(new EventManager()); } return $this->eventManager; } }