Skip to content

Commit ff4a7fa

Browse files
committed
add more tests
1 parent 80eb301 commit ff4a7fa

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

src/ArrayHelper.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,14 @@ public static function toArray(mixed $object, array $properties = [], bool $recu
111111
* @var Closure|string $name
112112
*/
113113
foreach ($properties[$className] as $key => $name) {
114+
if ($name instanceof Closure) {
115+
$result[$key] = $name($object);
116+
continue;
117+
}
114118
if (is_int($key)) {
115-
$result[(string)$name] = $object->$name;
119+
$result[$name] = $object->$name;
116120
} else {
117-
$result[$key] = $name instanceof Closure ? $name($object) : self::getValue($object, $name);
121+
$result[$key] = self::getValue($object, $name);
118122
}
119123
}
120124

tests/ArrayHelper/GetValueTest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,13 @@ public function testGetValueByMatcher(): void
102102

103103
$taggedPost = ArrayHelper::getValue($posts, fn ($post) => isset($post->tag));
104104
$this->assertEquals('hello test', $taggedPost->title);
105+
106+
$default = ArrayHelper::getValue([], fn ($post) => isset($post->tag), 'default');
107+
$this->assertEquals($default, 'default');
108+
109+
$this->expectException(InvalidArgumentException::class);
110+
$this->expectExceptionMessage('Matcher cannot be applied to an object');
111+
$taggedPost = ArrayHelper::getValue(new StaticObject(), fn ($post) => isset($post->tag));
105112
}
106113

107114
public function dataProviderGetValueByPathFromArray(): array

0 commit comments

Comments
 (0)