This is simple library to convert array to specified value object classes.
class EmailAddress{public$email; publicfunction__construct(string$email){$this->email = $email} } $arrayToDtoParse = newArrayToDtoParser(); $result = $arrayToDtoParse->parseToDto(EmailAddress::class, [ '[email protected]'; ]); // $result variable contains correct EmailAddress objectecho$result->email; // [email protected]class User{public$emailAddress; public$number; public$birthDate; publicfunction__construct(EmailAddress$emailAddress, string$name, \DateTime$birthDate){$this->emailAddress = $emailAddress; $this->number = $name; $this->birthDate = $birthDate} } class Nested{public$user; public$emailAddress; publicfunction__construct(User$user, EmailAddress$emailAddress){$this->user = $user; $this->emailAddress = $emailAddress} } class EmailAddress{public$email; publicfunction__construct(string$email){$this->email = $email} } class Dto{public$user; public$nested; publicfunction__construct(User$user, Nested$nested){$this->user = $user; $this->nested = $nested} } $arrayToDtoParse = newArrayToDtoParser(); $result = $arrayToDtoParse->parseToDto(Dto::class, [ 'user' => [ 'emailAddress' => '[email protected]', 'name' => 'Simon', 'birthDate' => '1991-01-02', ], 'nested' => [ 'user' => [ 'emailAddress' => '[email protected]', 'name' => 'Simon', 'birthDate' => '1991-01-02', ], 'emailAddress' => '[email protected]' ] ]);For more examples please look into /tests directory.
Keys in the array and constructor's parameters have to have the same names!