/**
     /* 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);
 }
예제 #2
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);
 }