private function Flow_searchForEntitiesAndStoreIdentifierArray($path, $propertyValue, $originalPropertyName)
    {
        if (is_array($propertyValue) || (is_object($propertyValue) && ($propertyValue instanceof \ArrayObject || $propertyValue instanceof \SplObjectStorage))) {
            foreach ($propertyValue as $key => $value) {
                $this->Flow_searchForEntitiesAndStoreIdentifierArray($path . '.' . $key, $value, $originalPropertyName);
            }
        } elseif ($propertyValue instanceof PersistenceMagicInterface && !Bootstrap::$staticObjectManager->get(PersistenceManagerInterface::class)->isNewObject($propertyValue) || $propertyValue instanceof OrmProxy) {
            if (!property_exists($this, 'Flow_Persistence_RelatedEntities') || !is_array($this->Flow_Persistence_RelatedEntities)) {
                $this->Flow_Persistence_RelatedEntities = [];
                $this->Flow_Object_PropertiesToSerialize[] = 'Flow_Persistence_RelatedEntities';
            }
            if ($propertyValue instanceof OrmProxy) {
                $className = get_parent_class($propertyValue);
            } else {
                $className = Bootstrap::$staticObjectManager->getObjectNameByClassName(get_class($propertyValue));
            }
            $identifier = Bootstrap::$staticObjectManager->get(PersistenceManagerInterface::class)->getIdentifierByObject($propertyValue);
            if (!$identifier && $propertyValue instanceof OrmProxy) {
                $identifier = current(ObjectAccess::getProperty($propertyValue, '_identifier', true));
            }
            $this->Flow_Persistence_RelatedEntities[$originalPropertyName . '.' . $path] = [
                'propertyName' => $originalPropertyName,
                'entityType' => $className,
                'identifier' => $identifier,
                'entityPath' => $path
            ];
            $this->$originalPropertyName = Arrays::setValueByPath($this->$originalPropertyName, $path, null);
        }
    }
private function Flow_searchForEntitiesAndStoreIdentifierArray($path, $propertyValue, $originalPropertyName)
    {
        if (is_array($propertyValue) || (is_object($propertyValue) && ($propertyValue instanceof \ArrayObject || $propertyValue instanceof \SplObjectStorage))) {
            foreach ($propertyValue as $key => $value) {
                $this->Flow_searchForEntitiesAndStoreIdentifierArray($path . '.' . $key, $value, $originalPropertyName);
            }
        } elseif ($propertyValue instanceof PersistenceMagicInterface && !Bootstrap::$staticObjectManager->get(PersistenceManagerInterface::class)->isNewObject($propertyValue) || $propertyValue instanceof OrmProxy) {
            if (!property_exists($this, 'Flow_Persistence_RelatedEntities') || !is_array($this->Flow_Persistence_RelatedEntities)) {
                $this->Flow_Persistence_RelatedEntities = [];
                $this->Flow_Object_PropertiesToSerialize[] = 'Flow_Persistence_RelatedEntities';
            }
            if ($propertyValue instanceof OrmProxy) {
                $className = get_parent_class($propertyValue);
            } else {
                $className = Bootstrap::$staticObjectManager->getObjectNameByClassName(get_class($propertyValue));
            }
            $identifier = Bootstrap::$staticObjectManager->get(PersistenceManagerInterface::class)->getIdentifierByObject($propertyValue);
            if (!$identifier && $propertyValue instanceof OrmProxy) {
                $identifier = current(ObjectAccess::getProperty($propertyValue, '_identifier', true));
            }
            $this->Flow_Persistence_RelatedEntities[$originalPropertyName . '.' . $path] = [
                'propertyName' => $originalPropertyName,
                'entityType' => $className,
                'identifier' => $identifier,
                'entityPath' => $path
            ];
            $this->$originalPropertyName = Arrays::setValueByPath($this->$originalPropertyName, $path, null);
        }
    }
private function Flow_searchForEntitiesAndStoreIdentifierArray ( $ path , $ propertyValue , $ originalPropertyName ) { if ( is_array ( $ propertyValue ) || ( is_object ( $ propertyValue ) && ( $ propertyValue instanceof \ ArrayObject || $ propertyValue instanceof \ SplObjectStorage ) ) ) { foreach ( $ propertyValue as $ key => $ value ) { $ this -> Flow_searchForEntitiesAndStoreIdentifierArray ( $ path . '.' . $ key , $ value , $ originalPropertyName ) ; } } elseif ( $ propertyValue instanceof PersistenceMagicInterface && ! Bootstrap :: $ staticObjectManager -> get ( PersistenceManagerInterface :: class ) -> isNewObject ( $ propertyValue ) || $ propertyValue instanceof OrmProxy ) { if ( ! property_exists ( $ this , 'Flow_Persistence_RelatedEntities' ) || ! is_array ( $ this -> Flow_Persistence_RelatedEntities ) ) { $ this -> Flow_Persistence_RelatedEntities = [ ] ; $ this -> Flow_Object_PropertiesToSerialize [ ] = 'Flow_Persistence_RelatedEntities' ; } if ( $ propertyValue instanceof OrmProxy ) { $ className = get_parent_class ( $ propertyValue ) ; } else { $ className = Bootstrap :: $ staticObjectManager -> getObjectNameByClassName ( get_class ( $ propertyValue ) ) ; } $ identifier = Bootstrap :: $ staticObjectManager -> get ( PersistenceManagerInterface :: class ) -> getIdentifierByObject ( $ propertyValue ) ; if ( ! $ identifier && $ propertyValue instanceof OrmProxy ) { $ identifier = current ( ObjectAccess :: getProperty ( $ propertyValue , '_identifier' , true ) ) ; } $ this -> Flow_Persistence_RelatedEntities [ $ originalPropertyName . '.' . $ path ] = [ 'propertyName' => $ originalPropertyName , 'entityType' => $ className , 'identifier' => $ identifier , 'entityPath' => $ path ] ; $ this -> $ originalPropertyName = Arrays :: setValueByPath ( $ this -> $ originalPropertyName , $ path , null ) ; } }
Serialize entities that are inside an array or SplObjectStorage

@param string $path
@param mixed $propertyValue
@param string $originalPropertyName
@return void
Serialize entities that are inside an array or SplObjectStorage