Skip to content

Commit

Permalink
CS fixes and docblocks for the aggregate hydrator namespace
Browse files Browse the repository at this point in the history
  • Loading branch information
Ocramius committed May 9, 2013
1 parent a3e65d8 commit 5c16dd4
Show file tree
Hide file tree
Showing 9 changed files with 95 additions and 7 deletions.
9 changes: 9 additions & 0 deletions library/Zend/Stdlib/Hydrator/Aggregate/AggregateHydrator.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
use Zend\Stdlib\Hydrator\Filter\FilterComposite;
use Zend\Stdlib\Hydrator\HydratorInterface;

/**
* Aggregate hydrator that composes multiple hydrators via events
*/
class AggregateHydrator implements HydratorInterface, EventManagerAwareInterface
{
const DEFAULT_PRIORITY = 1;
Expand All @@ -25,6 +28,12 @@ class AggregateHydrator implements HydratorInterface, EventManagerAwareInterface
*/
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);
Expand Down
38 changes: 36 additions & 2 deletions library/Zend/Stdlib/Hydrator/Aggregate/ExtractEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,11 @@


use Zend\EventManager\Event;
use Zend\Stdlib\ArrayUtils;

/**
* Event triggered when the {@see \Zend\Stdlib\Hydrator\Aggregate\AggregateHydrator} extracts
* data from an object
*/
class ExtractEvent extends Event
{
const EVENT_EXTRACT = 'extract';
Expand All @@ -32,34 +35,65 @@ class ExtractEvent extends Event
*/
protected $extractedData = array();

/**
* @param object $target
* @param object $extractionObject
*/
public function __construct($target, $extractionObject)
{
$this->target = $target;
$this->extractionObject = $extractionObject;
}

/**
* Retrieves the object from which data is extracted
*
* @return object
*/
public function getExtractionObject()
{
return $this->extractionObject;
}

/**
* @param object $extractionObject
*
* @return void
*/
public function setExtractionObject($extractionObject)
{
$this->extractionObject = $extractionObject;
}

/**
* Retrieves the data that has been extracted
*
* @return array
*/
public function getExtractedData()
{
return $this->extractedData;
}

/**
* @param array $extractedData
*
* @return void
*/
public function setExtractedData(array $extractedData)
{
$this->extractedData = $extractedData;
}

/**
* Merge provided data with the extracted data
*
* @param array $additionalData
*
* @return void
*/
public function mergeExtractedData(array $additionalData)
{
$this->extractedData = array_merge($this->extractedData, $additionalData);
}
}
}
27 changes: 26 additions & 1 deletion library/Zend/Stdlib/Hydrator/Aggregate/HydrateEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@

use Zend\EventManager\Event;

/**
* Event triggered when the {@see \Zend\Stdlib\Hydrator\Aggregate\AggregateHydrator} hydrates
* data into an object
*/
class HydrateEvent extends Event
{
const EVENT_HYDRATE = 'hydrate';
Expand All @@ -31,30 +35,51 @@ class HydrateEvent extends Event
*/
protected $hydrationData;

/**
* @param object $target
* @param object $hydratedObject
* @param array $hydrationData
*/
public function __construct($target, $hydratedObject, array $hydrationData)
{
$this->target = $target;
$this->hydratedObject = $hydratedObject;
$this->hydrationData = $hydrationData;
}

/**
* Retrieves the object that is being hydrated
*
* @return object
*/
public function getHydratedObject()
{
return $this->hydratedObject;
}

/**
* @param object $hydratedObject
*/
public function setHydratedObject($hydratedObject)
{
$this->hydratedObject = $hydratedObject;
}

/**
* Retrieves the data that is being used for hydration
*
* @return array
*/
public function getHydrationData()
{
return $this->hydrationData;
}

/**
* @param array $hydrationData
*/
public function setHydrationData(array $hydrationData)
{
$this->hydrationData = $hydrationData;
}
}
}
17 changes: 17 additions & 0 deletions library/Zend/Stdlib/Hydrator/Aggregate/HydratorListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@
use Zend\EventManager\EventManagerInterface;
use Zend\Stdlib\Hydrator\HydratorInterface;

/**
* Aggregate listener wrapping around a hydrator. Listens
* to {@see \Zend\Stdlib\Hydrator\Aggregate::EVENT_HYDRATE} and
* {@see \Zend\Stdlib\Hydrator\Aggregate::EVENT_EXTRACT}
*/
class HydratorListener extends AbstractListenerAggregate
{
/**
Expand All @@ -39,6 +44,12 @@ public function attach(EventManagerInterface $events)
}

/**
* Callback to be used when {@see \Zend\Stdlib\Hydrator\Aggregate\HydrateEvent::EVENT_HYDRATE} is triggered
*
* @param \Zend\Stdlib\Hydrator\Aggregate\HydrateEvent $event
*
* @return object
*
* @internal
*/
public function onHydrate(HydrateEvent $event)
Expand All @@ -51,6 +62,12 @@ public function onHydrate(HydrateEvent $event)
}

/**
* Callback to be used when {@see \Zend\Stdlib\Hydrator\Aggregate\ExtractEvent::EVENT_EXTRACT} is triggered
*
* @param \Zend\Stdlib\Hydrator\Aggregate\ExtractEvent $event
*
* @return array
*
* @internal
*/
public function onExtract(ExtractEvent $event)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,4 +175,4 @@ public function getHydratorSet()
array(new ArraySerializable(), new ArrayObject(array('zaphod' => 'beeblebrox')), array('arthur' => 'dent')),
);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
use Zend\Stdlib\Hydrator\Aggregate\AggregateHydrator;
use stdClass;

/**
* Unit tests for {@see \Zend\Stdlib\Hydrator\Aggregate\AggregateHydrator}
*/
class AggregateHydratorTest extends PHPUnit_Framework_TestCase
{
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,4 @@ public function testEvent()
$this->assertSame('Marvin', $extracted['maintainer']);
$this->assertSame('Zaphod', $extracted['president']);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,4 @@ public function testEvent()

$this->assertSame($hydrated2, $event->getHydratedObject());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -115,4 +115,4 @@ public function testOnExtract()

$this->assertSame($data, $this->listener->onExtract($event));
}
}
}

0 comments on commit 5c16dd4

Please sign in to comment.