Open Source/plain-to-class/Использование/Базовое использование
Базовое использование
Общий вариант использования:
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);// или статическая инициализация$dto = Hydrator::init()->create(CreateUserDTO::class, $data);var_dump($dto);Результат:
object(\CreateUserDTO) 'email' => string(13) "test@mail.com" 'balance' => float(128.41)Также с версии php 8 вы можете передавать именованные аргументы:
$dto = Hydrator::init()->create(CreateUserDTO::class, email: 'test@mail.com', balance: 128.41 );Если свойство не является скалярным типом, а у него указан класс другого DTO, оно тоже будет автоматически преобразовано.
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);Результат:
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