Neos\Flow\Persistence\Generic\Backend\AbstractBackend::flattenValue PHP Метод

flattenValue() защищенный Метод

Convert a value to the internal object data format
protected flattenValue ( string $identifier, object $object, string $propertyName, array $propertyMetaData, array &$propertyData ) : void
$identifier string The object's identifier
$object object The object with the property to flatten
$propertyName string The name of the property
$propertyMetaData array The property metadata
$propertyData array Reference to the property data array
Результат void
    protected function flattenValue($identifier, $object, $propertyName, array $propertyMetaData, array &$propertyData)
    {
        $propertyValue = ObjectAccess::getProperty($object, $propertyName, true);
        if ($propertyValue instanceof PersistenceMagicInterface) {
            $propertyData[$propertyName] = ['type' => get_class($propertyValue), 'multivalue' => false, 'value' => $this->processObject($propertyValue, $identifier)];
        } else {
            switch ($propertyMetaData['type']) {
                case 'DateTime':
                    $propertyData[$propertyName] = ['multivalue' => false, 'value' => $this->processDateTime($propertyValue)];
                    break;
                case Collection::class:
                case ArrayCollection::class:
                    $propertyValue = $propertyValue === null ? [] : $propertyValue->toArray();
                case 'array':
                    $propertyData[$propertyName] = ['multivalue' => true, 'value' => $this->processArray($propertyValue, $identifier, $this->persistenceSession->getCleanStateOfProperty($object, $propertyName))];
                    break;
                case 'SplObjectStorage':
                    $propertyData[$propertyName] = ['multivalue' => true, 'value' => $this->processSplObjectStorage($propertyValue, $identifier, $this->persistenceSession->getCleanStateOfProperty($object, $propertyName))];
                    break;
                default:
                    if ($propertyValue === null && !TypeHandling::isSimpleType($propertyMetaData['type'])) {
                        $this->removeDeletedReference($object, $propertyName, $propertyMetaData);
                    }
                    $propertyData[$propertyName] = ['multivalue' => false, 'value' => $propertyValue];
                    break;
            }
            $propertyData[$propertyName]['type'] = $propertyMetaData['type'];
        }
    }