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([__CLASS__, get_class($this)]); $this->eventManager = $eventManager; } /** * {@inheritDoc} */ public function getEventManager() : EventManagerInterface { if (null === $this->eventManager) { $this->setEventManager(new EventManager()); } return $this->eventManager; } }