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 = Hydrator::init()->create(PurchaseDTO::class, $data);