public function testCreateArray() { $team = new Team('Dream Team'); $team->setCreatedAt(new \DateTime('2016-01-01')); $manager = new Manager(); $manager->setName('Big Manager'); $manager->setSalary('10000'); $team->setManager($manager); $player1 = new Player(); $player1->setName('Player 1'); $player1->setNumber('1'); $player1->setHeight('1.80'); $team->setPlayers([$player1]); //register custom parser $object2Array = Object2ArrayBuilder::create()->addParser(new CallableParser(function ($value, $type, \ReflectionProperty $property, $object) { if ($property->getName() === 'salary') { $value = '$' . $value; } return $value; }))->build(); $array = $object2Array->createArray($team); static::assertEquals($team->getName(), $array['name']); static::assertEquals('2016-01-01 00:00:00', $array['createdAt']); static::assertEquals($manager->getName(), $array['manager']['name']); static::assertEquals('$10000', $array['manager']['salary']); static::assertEquals('Player 1', $array['players'][0]['name']); }