Open Source/plain-to-class/Usage/Basic usage
Basic usage
Common use case:
namespace DTO;
class CreateUserDTO{ public string $email; public float $balance;}$data = [ 'email' => 'test@mail.com', 'balance' => 128.41,];
$dto = (new Hydrator())->create(CreateUserDTO::class, $data);// or static init$dto = Hydrator::init()->create(CreateUserDTO::class, $data);var_dump($dto);Result:
object(\CreateUserDTO) 'email' => string(13) "test@mail.com" 'balance' => float(128.41)Also for php 8 you can pass named arguments:
$dto = Hydrator::init()->create(CreateUserDTO::class, email: 'test@mail.com', balance: 128.41 );If the property is not of a scalar type, but a class of another DTO is allowed, it will also be automatically converted.
class ProductDTO{ public int $id; public string $name;}
class PurchaseDTO{ public ProductDTO $product; public float $cost;}
$data = [ 'product' => ['id' => 1, 'name' => 'phone'], 'cost' => 10012.23,];
$purchaseDTO = Hydrator::init()->create(PurchaseDTO::class, $data);var_dump($purchaseDTO);Output:
object(PurchaseDTO) public ProductDTO 'product' => object(ProductDTO) public int 'id' => int 1 public string 'name' => string 'phone' (length=5) public float 'cost' => float 10012.23