From 76f32b8fff6cec89f6d8dbe9d25c05fc3aaf3999 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Barto=C5=A1?= Date: Tue, 21 Jan 2025 20:59:23 +0100 Subject: [PATCH] DefaultProcessor: call unset() for mapped object properties only in RequiredFields::none() mode (performance optimization) --- CHANGELOG.md | 1 + src/Processing/DefaultProcessor.php | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d11efa..f7317c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,6 +58,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - automatic meta cache reset after main `process()` call (performance optimization) replaced with `reset()` method - properties are not set/unset via closure binding when public + - call `unset()` for mapped object properties only in `RequiredFields::none()` mode (performance optimization) ### Removed diff --git a/src/Processing/DefaultProcessor.php b/src/Processing/DefaultProcessor.php index b88f5dd..4fc72a2 100644 --- a/src/Processing/DefaultProcessor.php +++ b/src/Processing/DefaultProcessor.php @@ -552,10 +552,13 @@ private function fillObject( $this->rawValuesMap->setRawValues($object, $rawData); } - // Reset mapped properties state $fieldsMeta = $meta->getFields(); - foreach ($fieldsMeta as $fieldMeta) { - $this->objectUnset($object, $fieldMeta->getProperty()); + + if ($dynamic->getOptions()->getRequiredFields() === RequiredFields::none()) { + // Reset mapped properties state + foreach ($fieldsMeta as $fieldMeta) { + $this->objectUnset($object, $fieldMeta->getProperty()); + } } // Set processed data