diff --git a/CHANGELOG.md b/CHANGELOG.md index 3322cf39..3309d4d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - [GH#11](https://github.com/jolicode/automapper/pull/11) Added phpstan level 5 in CI +### Fixed +- [GH#9](https://github.com/jolicode/automapper/pull/9) fix: `mapPrivatePropertiesAndMethod` should not be mandatory + ## [8.0.1] - 2023-10-04 ### Changed - [GH#6](https://github.com/jolicode/automapper/pull/6) Document all AST code by explaining what it generates diff --git a/src/Extractor/FromSourceMappingExtractor.php b/src/Extractor/FromSourceMappingExtractor.php index fc576e21..82493d3d 100644 --- a/src/Extractor/FromSourceMappingExtractor.php +++ b/src/Extractor/FromSourceMappingExtractor.php @@ -87,7 +87,7 @@ public function getPropertiesMapping(MapperMetadataInterface $mapperMetadata): a $this->getMaxDepth($mapperMetadata->getSource(), $property), $this->isIgnoredProperty($mapperMetadata->getSource(), $property), $this->isIgnoredProperty($mapperMetadata->getTarget(), $property), - PropertyReadInfo::VISIBILITY_PUBLIC === ($this->readInfoExtractor->getReadInfo($mapperMetadata->getSource(), $property)?->getVisibility() ?? true) + PropertyReadInfo::VISIBILITY_PUBLIC === ($this->readInfoExtractor->getReadInfo($mapperMetadata->getSource(), $property)?->getVisibility() ?? PropertyReadInfo::VISIBILITY_PUBLIC), ); } diff --git a/src/Extractor/FromTargetMappingExtractor.php b/src/Extractor/FromTargetMappingExtractor.php index 8325bc8b..eba729ee 100644 --- a/src/Extractor/FromTargetMappingExtractor.php +++ b/src/Extractor/FromTargetMappingExtractor.php @@ -86,7 +86,7 @@ public function getPropertiesMapping(MapperMetadataInterface $mapperMetadata): a $this->getMaxDepth($mapperMetadata->getTarget(), $property), $this->isIgnoredProperty($mapperMetadata->getSource(), $property), $this->isIgnoredProperty($mapperMetadata->getTarget(), $property), - PropertyReadInfo::VISIBILITY_PUBLIC === ($this->readInfoExtractor->getReadInfo($mapperMetadata->getSource(), $property)?->getVisibility() ?? true), + PropertyReadInfo::VISIBILITY_PUBLIC === ($this->readInfoExtractor->getReadInfo($mapperMetadata->getSource(), $property)?->getVisibility() ?? PropertyReadInfo::VISIBILITY_PUBLIC), ); } diff --git a/src/Extractor/SourceTargetMappingExtractor.php b/src/Extractor/SourceTargetMappingExtractor.php index 992d2acb..a0003ba7 100644 --- a/src/Extractor/SourceTargetMappingExtractor.php +++ b/src/Extractor/SourceTargetMappingExtractor.php @@ -79,7 +79,7 @@ public function getPropertiesMapping(MapperMetadataInterface $mapperMetadata): a $maxDepth, $this->isIgnoredProperty($mapperMetadata->getSource(), $property), $this->isIgnoredProperty($mapperMetadata->getTarget(), $property), - PropertyReadInfo::VISIBILITY_PUBLIC === ($this->readInfoExtractor->getReadInfo($mapperMetadata->getSource(), $property)?->getVisibility() ?? true), + PropertyReadInfo::VISIBILITY_PUBLIC === ($this->readInfoExtractor->getReadInfo($mapperMetadata->getSource(), $property)?->getVisibility() ?? PropertyReadInfo::VISIBILITY_PUBLIC), ); } } diff --git a/src/MapperMetadata.php b/src/MapperMetadata.php index 5f5fce1d..b46755e2 100644 --- a/src/MapperMetadata.php +++ b/src/MapperMetadata.php @@ -229,7 +229,8 @@ private function buildPropertyMapping(): void null, new CallbackTransformer($property), $property, - false + false, + isPublic: true, ); } } diff --git a/tests/AutoMapperTest.php b/tests/AutoMapperTest.php index 46d71898..3ce87689 100644 --- a/tests/AutoMapperTest.php +++ b/tests/AutoMapperTest.php @@ -93,7 +93,7 @@ public function testAutoMapperFromArray(): void public function testAutoMapperFromArrayCustomDateTime(): void { - $this->buildAutoMapper(mapPrivatePropertiesAndMethod: true, classPrefix: 'CustomDateTime_'); + $this->buildAutoMapper(classPrefix: 'CustomDateTime_'); $dateTime = \DateTime::createFromFormat(\DateTime::RFC3339, '1987-04-30T06:00:00Z'); $customFormat = 'U'; @@ -581,6 +581,8 @@ public function testAllowedAttributes(): void $address->setCity('some city'); $user->setAddress($address); + $this->buildAutoMapper(mapPrivatePropertiesAndMethod: true); + /** @var Fixtures\UserDTO $userDto */ $userDto = $this->autoMapper->map($user, Fixtures\UserDTO::class, [MapperContext::ALLOWED_ATTRIBUTES => ['id', 'age', 'address']]); @@ -615,6 +617,7 @@ public function testMappingWithTargetObjectWithNoObjectToPopulate(): void }); $user = new Fixtures\User(1, 'yolo', '13'); + $userDto = $this->autoMapper->map($user, Fixtures\UserDTOMerged::class); self::assertArrayHasKey('name', $userDto->getProperties());