diff --git a/Classes/Reflection/ObjectAccess.php b/Classes/Reflection/ObjectAccess.php index b1feef3..1cce0e3 100644 --- a/Classes/Reflection/ObjectAccess.php +++ b/Classes/Reflection/ObjectAccess.php @@ -115,11 +115,12 @@ class ObjectAccess { throw new \TYPO3\CMS\Extbase\Reflection\Exception\PropertyNotAccessibleException('The property "' . $propertyName . '" on the subject does not exist.', 1302855001); } } - if ( - $subject instanceof \ArrayAccess - && !($subject instanceof \SplObjectStorage || $subject instanceof \TYPO3\CMS\Extbase\Persistence\ObjectStorage) - && isset($subject[$propertyName]) - ) { + if ($subject instanceof \TYPO3\CMS\Extbase\Persistence\ObjectStorage || $subject instanceof \SplObjectStorage) { + $storageAsArray = $subject->toArray(); + if(isset($storageAsArray[$propertyName])) { + return $storageAsArray[$propertyName]; + } + } else if ($subject instanceof \ArrayAccess && isset($subject[$propertyName])) { return $subject[$propertyName]; } $getterMethodName = 'get' . ucfirst($propertyName); @@ -159,7 +160,7 @@ class ObjectAccess { $propertyExists !== TRUE && ($subject instanceof \SplObjectStorage || $subject instanceof \TYPO3\CMS\Extbase\Persistence\ObjectStorage) ) { - $subject = NULL; + $subject = $propertyValue; } elseif ( $propertyExists !== TRUE && (is_array($subject) || $subject instanceof \ArrayAccess)