Source of file AggregateHydrator.php
Size: 2,246 Bytes - Last Modified: 2014-03-12T23:21:18+01:00
/home/theseer/Downloads/ZendFramework-2.3.0/library/Zend/Stdlib/Hydrator/Aggregate/AggregateHydrator.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | <?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Zend\Stdlib\Hydrator\Aggregate; use Zend\EventManager\EventManager; use Zend\EventManager\EventManagerAwareInterface; use Zend\EventManager\EventManagerInterface; use Zend\Stdlib\Hydrator\HydratorInterface; /** * Aggregate hydrator that composes multiple hydrators via events */ class AggregateHydrator implements HydratorInterface, EventManagerAwareInterface { const DEFAULT_PRIORITY = 1; /** * @var \Zend\EventManager\EventManagerInterface|null */ protected $eventManager; /** * Attaches the provided hydrator to the list of hydrators to be used while hydrating/extracting data * * @param \Zend\Stdlib\Hydrator\HydratorInterface $hydrator * @param int $priority */ public function add(HydratorInterface $hydrator, $priority = self::DEFAULT_PRIORITY) { $this->getEventManager()->attachAggregate(new HydratorListener($hydrator), $priority); } /** * {@inheritDoc} */ public function extract($object) { $event = new ExtractEvent($this, $object); $this->getEventManager()->trigger($event); return $event->getExtractedData(); } /** * {@inheritDoc} */ public function hydrate(array $data, $object) { $event = new HydrateEvent($this, $object, $data); $this->getEventManager()->trigger($event); return $event->getHydratedObject(); } /** * {@inheritDoc} */ public function setEventManager(EventManagerInterface $eventManager) { $eventManager->setIdentifiers(array(__CLASS__, get_class($this))); $this->eventManager = $eventManager; } /** * {@inheritDoc} */ public function getEventManager() { if (null === $this->eventManager) { $this->setEventManager(new EventManager()); } return $this->eventManager; } } |