From f770625783fa9881255d9ab853c66be0b9310688 Mon Sep 17 00:00:00 2001 From: Greg Bowler Date: Sat, 14 Oct 2023 18:57:26 +0100 Subject: [PATCH] test: fix bug binding nested iterator aggregate --- src/ListBinder.php | 6 +++++- test/phpunit/ListBinderTest.php | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/ListBinder.php b/src/ListBinder.php index ba82d30..54e07b4 100644 --- a/src/ListBinder.php +++ b/src/ListBinder.php @@ -98,6 +98,10 @@ public function bindListData( if($this->isKVP($listValue)) { $elementBinder->bind(null, $listKey, $t); + if(is_object($listValue)) { + $listValue = get_object_vars($listValue); + $listValue = array_filter($listValue, fn($item) => !is_array($item)); + } foreach($listValue as $key => $value) { $elementBinder->bind($key, $value, $t); @@ -162,7 +166,7 @@ private function isNested(mixed $item):bool { $key = array_key_first($item); return is_int($key) || is_iterable($item[$key]); } - elseif($item instanceof Iterator || $item instanceof \Traversable) { + elseif($item instanceof Iterator) { return true; } diff --git a/test/phpunit/ListBinderTest.php b/test/phpunit/ListBinderTest.php index c9371be..e90afdb 100644 --- a/test/phpunit/ListBinderTest.php +++ b/test/phpunit/ListBinderTest.php @@ -791,7 +791,10 @@ public function testBindListData_iteratorAggregate_outerBinds():void { $firstName = $arrayStudent["firstName"]; $lastName = $arrayStudent["lastName"]; - self::assertSame("$firstName $lastName", $studentLi->querySelector("dd.name")->textContent); + self::assertSame( + "$firstName $lastName", + trim(preg_replace("/\s+/", " ", $studentLi->querySelector("dd.name")->textContent)) + ); $arrayModuleData = $arrayStudent["modules"]; foreach($studentLi->querySelectorAll(".modules ul>li") as $moduleLi) {