Open Source/plain-to-class/Использование/Коллекция

Коллекция

Если у вас есть массив объектов определённого класса, то вы должны указать для него атрибут ConvertArray, передав ему, в какой класс вам нужно привести элементы.

Также можно указать класс в PHP DOC, но тогда вам нужно написать полный путь к этому классу array<\DTO\ProductDTO>. Это делается для того, чтобы точно знать, какой экземпляр нужно создать. Поскольку Reflection не предоставляет готовых функций для получения файла use. Помимо use, вы можете указать псевдоним и его будет сложнее отследить. Пример:

class ProductDTO
{
public int $id;
public string $name;
}
class PurchaseDTO
{
#[ConvertArray(ProductDTO::class)]
public array $products;
}
$data = [
'products' => [
['id' => 1, 'name' => 'phone'],
['id' => 2, 'name' => 'bread'],
],
];
$purchaseDTO = ClassTransformer::transform(PurchaseDTO::class, $data);