3 * Zend Framework (http://framework.zend.com/)
5 * @link http://github.com/zendframework/zf2 for the canonical source repository
6 * @copyright Copyright (c) 2005-2013 Zend Technologies USA Inc. (http://www.zend.com)
7 * @license http://framework.zend.com/license/new-bsd New BSD License
10 namespace Zend\Stdlib\Hydrator\Aggregate
;
13 use Zend\EventManager\AbstractListenerAggregate
;
14 use Zend\EventManager\EventManagerInterface
;
15 use Zend\Stdlib\Hydrator\HydratorInterface
;
18 * Aggregate listener wrapping around a hydrator. Listens
19 * to {@see \Zend\Stdlib\Hydrator\Aggregate::EVENT_HYDRATE} and
20 * {@see \Zend\Stdlib\Hydrator\Aggregate::EVENT_EXTRACT}
22 class HydratorListener
extends AbstractListenerAggregate
25 * @var \Zend\Stdlib\Hydrator\HydratorInterface
30 * @param \Zend\Stdlib\Hydrator\HydratorInterface $hydrator
32 public function __construct(HydratorInterface
$hydrator)
34 $this->hydrator
= $hydrator;
40 public function attach(EventManagerInterface
$events, $priority = 1)
42 $this->listeners
[] = $events->attach(HydrateEvent
::EVENT_HYDRATE
, array($this, 'onHydrate'), $priority);
43 $this->listeners
[] = $events->attach(ExtractEvent
::EVENT_EXTRACT
, array($this, 'onExtract'), $priority);
47 * Callback to be used when {@see \Zend\Stdlib\Hydrator\Aggregate\HydrateEvent::EVENT_HYDRATE} is triggered
49 * @param \Zend\Stdlib\Hydrator\Aggregate\HydrateEvent $event
55 public function onHydrate(HydrateEvent
$event)
57 $object = $this->hydrator
->hydrate($event->getHydrationData(), $event->getHydratedObject());
59 $event->setHydratedObject($object);
65 * Callback to be used when {@see \Zend\Stdlib\Hydrator\Aggregate\ExtractEvent::EVENT_EXTRACT} is triggered
67 * @param \Zend\Stdlib\Hydrator\Aggregate\ExtractEvent $event
73 public function onExtract(ExtractEvent
$event)
75 $data = $this->hydrator
->extract($event->getExtractionObject());
77 $event->mergeExtractedData($data);