Open Source/plain-to-class/Использование/Коллекция
Коллекция
Если у вас есть массив объектов определённого класса, то вы должны указать для него атрибут ConvertArray, передав ему, в какой класс нужно привести элементы.
Также можно указать класс в PHP DOC, но тогда нужно написать полный путь к этому классу array<\DTO\ProductDTO>. Это делается для того, чтобы точно знать, какой экземпляр нужно создать, поскольку Reflection не предоставляет готовых функций для получения файла use. Помимо use, можно указать псевдоним, и его будет сложнее отследить. Пример:
class ProductDTO{ public int $id; public string $name;}
class UserDTO{ public int $id; public string $email; public string $balance;}
class PurchaseDTO{ #[ConvertArray(ProductDTO::class)] public array $products;
/** @var UserDTO $user */ public UserDTO $user;}
$data = [ 'products' => [ ['id' => 1, 'name' => 'phone'], ['id' => 2, 'name' => 'bread'], ], 'user' => ['id' => 1, 'email' => 'test@test.com', 'balance' => 10012.23],];$purchaseDTO = ClassTransformer::transform(PurchaseDTO::class, $data);var_dump($purchaseDTO);object(PurchaseDTO)[345] public array 'products' => array (size=2) 0 => object(ProductDTO)[1558] public int 'id' => int 1 public string 'name' => string 'phone' (length=5) 1 => object(ProductDTO)[1563] public int 'id' => int 2 public string 'name' => string 'bread' (length=5) public UserDTO 'user' => object(UserDTO)[1559] public int 'id' => int 1 public string 'email' => string 'test@test.com' (length=13) public float 'balance' => float 10012.23