Open Source/plain-to-class/Использование/Анонимный массив
Анонимный массив
В случае если вам нужно преобразовать массив данных в массив объектов класса, вы можете реализовать это с помощью метода transformCollection.
$data = [ ['id' => 1, 'name' => 'phone'], ['id' => 2, 'name' => 'bread'],];$products = ClassTransformer::transformCollection(ProductDTO::class, $data);В результате этого вы получите массив объектов ProductDTO:
array(2) { [0]=> object(ProductDTO) { ["id"]=> int(1) ["name"]=> string(5) "phone" } [1]=> object(ProductDTO) { ["id"]=> int(2) ["name"]=> string(5) "bread" }}Вам также может потребоваться поэлементное преобразование массива. В таком случае вы можете передать массив классов, который затем можно легко распаковать:
$userData = ['id' => 1, 'email' => 'test@test.com', 'balance' => 10012.23];$purchaseData = [ 'products' => [ ['id' => 1, 'name' => 'phone'], ['id' => 2, 'name' => 'bread'], ], 'user' => ['id' => 3, 'email' => 'fake@mail.com', 'balance' => 10012.23],];
$result = ClassTransformer::transformMultiple([UserDTO::class, PurchaseDTO::class], [$userData, $purchaseData]);
[$user, $purchase] = $result;var_dump($user);var_dump($purchase);Результат:
object(UserDTO) (3) { ["id"] => int(1) ["email"]=> string(13) "test@test.com" ["balance"]=> float(10012.23)}
object(PurchaseDTO) (2) { ["products"]=> array(2) { [0]=> object(ProductDTO)#349 (3) { ["id"]=> int(1) ["name"]=> string(5) "phone" } [1]=> object(ProductDTO)#348 (3) { ["id"]=> int(2) ["name"]=> string(5) "bread" } } ["user"]=> object(UserDTO)#332 (3) { ["id"]=> int(3) ["email"]=> string(13) "fake@mail.com" ["balance"]=> float(10012.23) }}