Skip to content

Commit 5fe747a

Browse files
improve array handling in getObjectWrapperAsArray (#3)
* Saves originalData and introduces method `getOriginalData` to access it; Adds method `getDataAsArray` to get data in array form * remove clone * improve array handling in getObjectWrapperAsArray
1 parent bf83c7c commit 5fe747a

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

src/ObjectWrapper.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,14 @@ private function getObjectWrapperAsArray(ObjectWrapper $objectWrapper)
183183
if ($item instanceof ObjectWrapper) {
184184
$data[$key] = $this->getObjectWrapperAsArray($item);
185185
continue;
186+
} elseif (is_array($item)) {
187+
$data[$key] = [];
188+
foreach ($item as $arrayKey => $arrayItem) {
189+
$data[$key][$arrayKey] = $this->getObjectWrapperAsArray($arrayItem);
190+
}
191+
} else {
192+
$data[$key] = $item;
186193
}
187-
$data[$key] = $item;
188194
}
189195

190196
return $data;

tests/ObjectWrapperTest.php

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,9 +404,27 @@ public function testGetOriginalDataAsArray()
404404
$innerData = (object)['b' => 'c'];
405405
$data = new stdClass();
406406
$data->a = $innerData;
407+
408+
$firstArrayItem = new stdClass();
409+
$firstArrayItem->a = 1;
410+
$secondArrayItem = new stdClass();
411+
$secondArrayItem->b = 2;
412+
$thirdArrayItem = new stdClass();
413+
$thirdArrayItem->c = 3;
414+
$data->b = [$firstArrayItem, $secondArrayItem, $thirdArrayItem];
415+
407416
$object = new ObjectWrapper($data);
408417
$originalData = $object->getDataAsArray();
409-
$this->assertDeepEquals(['a' => ['b' => 'c']], $originalData);
418+
419+
$expectedArray = [
420+
'a' => ['b' => 'c'],
421+
'b' => [
422+
['a' => 1],
423+
['b' => 2],
424+
['c' => 3],
425+
],
426+
];
427+
$this->assertDeepEquals($expectedArray, $originalData);
410428
}
411429

412430
private function assertDeepEquals($expectedData, $dataWithWrappers)

0 commit comments

Comments
 (0)