public function testGetMapWithCache() { $this->manager->setMapDir('model.user', __DIR__ . '/data'); $map = $this->manager->getMap('model.user', 'dto'); $map2 = $this->manager->getMap('model.user', 'dto'); self::assertCount(6, $map2); self::assertEquals($map, $map2); }
/** * @param array $data * @param mixed $model * @param string $mapType * * @throws ParseException */ public function fillModel(array $data, $model, $mapType = 'dto') { $class = get_class($model); $map = $this->mapsManager->getMap($class, $mapType); $typeConverter = $this->getConverter(); $setModelFn = $this->fn->setToModel(); foreach ($data as $name => $val) { if (!array_key_exists($name, $map)) { continue; } $propRule = new PropRule($map[$name]); $val = $typeConverter->toModel($val, $propRule, $this); $setModelFn->call($model, $propRule->getSet(), $val, $propRule->getProp($name)); } }