/** * @param array[] $value * @param PropRule $propRule * @param DataTransformer $transformer * @return mixed[] * * @throws ParseException */ public function toModel(array $value, PropRule $propRule, DataTransformer $transformer) { $type = $propRule->getKey('rel')['map']; $emptyModel = $transformer->createModel($propRule->getKey('rel')['model']); $models = []; foreach ($value as $one) { $model = clone $emptyModel; $transformer->fillModel($one, $model, $type); $models[] = $model; } return $models; }
/** * @param mixed $model * @param string $mapType * @return array * * @throws ParseException */ public function getData($model, $mapType = 'dto') { $class = get_class($model); $map = $this->mapsManager->getMap($class, $mapType); $fromModelFn = $this->fn->getFromModel(); $props = []; foreach ($map as $dataKey => $propRule) { $propRule = new PropRule($propRule); $val = $fromModelFn->call($model, $propRule->getGetter(), $propRule->getProp($dataKey)); if ($val !== null) { $props[$dataKey] = $this->getConverter()->toData($val, $propRule, $this); } } return $props; }
/** * @param PropRule $propRule * @return array */ protected function getType(PropRule $propRule) : array { $isCollection = $propRule->getKey('coll', false); $type = $this->types[$propRule->getType()]; return [$type, $isCollection]; }