Skip to content

Commit 4c76fe5

Browse files
author
Mantas Marcinkevicius
committed
implemented embedded public property serialization
1 parent 22fdb0d commit 4c76fe5

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

Mapping/Converter.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,13 @@ protected function denormalize(array $raw, string $namespace)
8181

8282
if ($fieldMeta['embeded']) {
8383
$this->addClassMetadata($fieldMeta['class'], $fieldMeta['sub_properties']);
84-
$object->$setter(new ObjectIterator($fieldMeta['class'], $value, $this));
84+
$iterator = new ObjectIterator($fieldMeta['class'], $value, $this);
85+
86+
if ($fieldMeta['public']) {
87+
$object->{$fieldMeta['name']} = $iterator;
88+
} else {
89+
$object->$setter($iterator);
90+
}
8591
} else {
8692
if ($fieldMeta['public']) {
8793
$object->{$fieldMeta['name']} = $value;

Mapping/DocumentParser.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,6 @@ public function getPropertyMetadata(\ReflectionClass $class, bool $subClass = fa
224224

225225
if ($annotation instanceof Id) {
226226
$propertyMetadata['identifier'] = true;
227-
$propertyMetadata['setter'] = null;
228227
} else {
229228
if (!$propertyMetadata['public']) {
230229
$propertyMetadata['setter'] = $this->guessSetter($class, $name);
@@ -276,7 +275,7 @@ public function getAnalysisConfig(\ReflectionClass $class): array
276275
return $config;
277276
}
278277

279-
private function guessGetter(\ReflectionClass $class, $name): string
278+
protected function guessGetter(\ReflectionClass $class, $name): string
280279
{
281280
if ($class->hasMethod($name)) {
282281
return $name;
@@ -293,7 +292,7 @@ private function guessGetter(\ReflectionClass $class, $name): string
293292
throw new \Exception("Could not determine a getter for `$name` of class `{$class->getNamespaceName()}`");
294293
}
295294

296-
private function guessSetter(\ReflectionClass $class, $name): string
295+
protected function guessSetter(\ReflectionClass $class, $name): string
297296
{
298297
if ($class->hasMethod('set' . ucfirst($name))) {
299298
return 'set' . ucfirst($name);

0 commit comments

Comments
 (0)