Example #1
0
 /**
  * @covers \Zend\Stdlib\Hydrator\Strategy\ClosureStrategy::hydrate()
  * @dataProvider hydrateDataProvider
  *
  * @param Callable $hydrateFunc
  * @param array    $data
  * @param array    $expected
  */
 public function testHydrate($hydrateFunc, $data, $expected)
 {
     $strategy = new ClosureStrategy(null, $hydrateFunc);
     $actual = array();
     foreach ($data as $k => $value) {
         $actual[$k] = $strategy->hydrate($value, $data);
     }
     $this->assertSame($actual, $expected);
 }
 /**
     /* Constructor
 *
 * @param AbstractApi $dataMapper
 * @param string      $apiName    Api name providing data
 */
 public function __construct(AbstractApi $dataMapper, $apiName)
 {
     $extractFunc = function ($value) use($dataMapper, $apiName) {
         $api = $dataMapper->api($apiName);
         if ($value instanceof ResultSet) {
             if ($value->valid()) {
                 return $value->getHydrator()->extract($value->current());
             }
             return null;
         }
         return $value;
     };
     $hydrateFunc = function ($value) use($dataMapper, $apiName) {
         $api = $dataMapper->api($apiName);
         if (is_int($value)) {
             return $api->lazyLoadModelCollectionClosure($apiName, $value);
         }
         return $value;
     };
     parent::__construct($extractFunc, $hydrateFunc);
 }
Example #3
0
 /**
 /* Constructor
 *
 * @param AbstractApi $dataMapper
 * @param string      $apiName    Api name providing data
 */
 public function __construct(AbstractApi $dataMapper, $apiName)
 {
     $extractFunc = function ($value) use($dataMapper, $apiName) {
         $api = $dataMapper->api($apiName);
         if ($value instanceof ModelInterface) {
             $hydrator = $api->getHydrator();
             $value = $hydrator->extract($value);
             return $value;
         }
         return $value;
     };
     $hydrateFunc = function ($value) use($dataMapper, $apiName) {
         $api = $dataMapper->api($apiName);
         $hydrator = $api->getHydrator();
         $objectPrototype = $api->getResultSetPrototype()->getObjectPrototype();
         if (is_array($value)) {
             return $hydrator->hydrate($value, clone $objectPrototype);
         } elseif (is_int($value)) {
             return $api->lazyLoadModelClosure($apiName, $value);
         }
         return $value;
     };
     parent::__construct($extractFunc, $hydrateFunc);
 }