From fe3e23b51b9b6d63c97d121d2ce59c99d7003332 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo <1102197+priyadi@users.noreply.github.com> Date: Fri, 21 Jun 2024 14:30:21 +0700 Subject: [PATCH] refactor(`ObjectMapperTable`): simplification (#78) --- CHANGELOG.md | 4 ++++ src/CustomMapper/ObjectMapperTable.php | 22 +++++----------------- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 372c4ec..6568f6e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 1.5.2 + +* refactor(`ObjectMapperTable`): simplification + ## 1.5.1 * build: add github-actions to dependabot diff --git a/src/CustomMapper/ObjectMapperTable.php b/src/CustomMapper/ObjectMapperTable.php index e22ddaf..7bc774f 100644 --- a/src/CustomMapper/ObjectMapperTable.php +++ b/src/CustomMapper/ObjectMapperTable.php @@ -14,6 +14,7 @@ namespace Rekalogika\Mapper\CustomMapper; use Rekalogika\Mapper\ServiceMethod\ServiceMethodSpecification; +use Rekalogika\Mapper\Util\ClassUtil; /** * @implements \IteratorAggregate @@ -63,24 +64,11 @@ public function getObjectMapper( return null; } - $propertyMappers = $this->objectMappers[$targetClass]; + $sourceClasses = ClassUtil::getAllClassesFromObject($sourceClass); - $sourceClassReflection = new \ReflectionClass($sourceClass); - - do { - if (isset($propertyMappers[$sourceClassReflection->getName()])) { - return $propertyMappers[$sourceClassReflection->getName()]; - } - } while ($sourceClassReflection = $sourceClassReflection->getParentClass()); - - $interfaces = class_implements($sourceClass); - if ($interfaces === false) { - return null; - } - - foreach ($interfaces as $interface) { - if (isset($propertyMappers[$interface])) { - return $propertyMappers[$interface]; + foreach ($sourceClasses as $sourceClass) { + if (isset($this->objectMappers[$targetClass][$sourceClass])) { + return $this->objectMappers[$targetClass][$sourceClass]; } }