Ejemplo n.º 1
0
 /**
  * @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;
 }
 public function testFillModel()
 {
     $data = ['name' => 'name', 'login' => 'login', 'creAt' => new \DateTime(), 'active' => false, 'email' => '', 'someField' => 'someValue'];
     $this->transformer->getMapsManager()->setMapDir(UserModel::class, __DIR__ . '/data');
     /** @var UserModel $model */
     $model = $this->transformer->createModel(UserModel::class);
     $this->transformer->fillModel($data, $model, 'dto');
     self::assertInstanceOf('DateTime', $model->getCreAt());
     self::assertEquals($data['creAt']->getTimestamp(), $model->getCreAt()->getTimestamp());
     self::assertEquals($data['email'], $model->getEmail());
     self::assertEquals($data['name'], $model->getName());
     self::assertEquals($data['login'], $model->getLogin());
     self::assertEquals($data['active'], $model->isActive());
 }
Ejemplo n.º 3
0
use PTS\DataTransformer\TypeConverter;
use PTS\DataTransformer\Types\ArrayType;
use PTS\DataTransformer\Types\BaseType;
use PTS\DataTransformer\Types\BoolType;
use PTS\DataTransformer\Types\DateType;
use PTS\DataTransformer\Types\FloatType;
use PTS\DataTransformer\Types\IntType;
use PTS\DataTransformer\Types\RefModelsToArrayStringIdType;
use PTS\DataTransformer\Types\RefModelsType;
use PTS\DataTransformer\Types\RefModelType;
use PTS\DataTransformer\Types\StringType;
use Symfony\Component\Yaml\Parser;
include_once __DIR__ . '/../../vendor/autoload.php';
include_once __DIR__ . '/../models/Post/Post.php';
include_once __DIR__ . '/../models/Tag/Tag.php';
$transformer = new DataTransformer(new TypeConverter(), new MapsManager(new Parser()), new ModelClosure());
$converter = $transformer->getConverter();
$converter->addType('proxy', new BaseType());
$converter->addType('int', new IntType());
$converter->addType('string', new StringType());
$converter->addType('array', new ArrayType());
$converter->addType('date', new DateType());
$converter->addType('float', new FloatType());
$converter->addType('bool', new BoolType());
$converter->addType('refModelsToArrayStringId', new RefModelsToArrayStringIdType());
$converter->addType('refModels', new RefModelsType());
$converter->addType('refModel', new RefModelType());
$transformer->getMapsManager()->setMapDir(Tag::class, __DIR__ . '/../models/Tag/');
$transformer->getMapsManager()->setMapDir(Post::class, __DIR__ . '/../models/Post/');
$tag1 = (new Tag())->setId(1)->setTitle('music');
$tag2 = (new Tag())->setId(2)->setTitle('js');
Ejemplo n.º 4
0
 /**
  * @expectedException \PTS\DataTransformer\TypeException
  */
 public function testBadType()
 {
     $converter = $this->transformer->getConverter();
     $converter->addType('badType', new BadType());
 }