private function loadObjectPersister(array $typeConfig, Reference $typeRef, ContainerBuilder $container, $indexName, $typeName, $transformerId)
    {
        if (isset($typeConfig['persister']['service'])) {
            return $typeConfig['persister']['service'];
        }

        $arguments = [
            $typeRef,
            new Reference($transformerId),
            $typeConfig['model'],
        ];

        if ($container->hasDefinition('fos_elastica.serializer_callback_prototype')) {
            $abstractId = 'fos_elastica.object_serializer_persister';
            $callbackId = sprintf('%s.%s.serializer.callback', $this->indexConfigs[$indexName]['reference'], $typeName);
            $arguments[] = [new Reference($callbackId), 'serialize'];
        } else {
            $abstractId = 'fos_elastica.object_persister';
            $mapping = $this->indexConfigs[$indexName]['types'][$typeName]['mapping'];
            $argument = $mapping['properties'];
            if (isset($mapping['_parent'])) {
                $argument['_parent'] = $mapping['_parent'];
            }
            $arguments[] = $argument;
        }

        $arguments[] = array_intersect_key($typeConfig['persister'], array_flip(['refresh']));

        $serviceId = sprintf('fos_elastica.object_persister.%s.%s', $indexName, $typeName);
        $serviceDef = new ChildDefinition($abstractId);
        foreach ($arguments as $i => $argument) {
            $serviceDef->replaceArgument($i, $argument);
        }

        $serviceDef->addTag('fos_elastica.persister', ['index' => $indexName, 'type' => $typeName]);

        $container->setDefinition($serviceId, $serviceDef);

        return $serviceId;
    }
private function loadObjectPersister(array $typeConfig, Reference $typeRef, ContainerBuilder $container, $indexName, $typeName, $transformerId)
    {
        if (isset($typeConfig['persister']['service'])) {
            return $typeConfig['persister']['service'];
        }

        $arguments = [
            $typeRef,
            new Reference($transformerId),
            $typeConfig['model'],
        ];

        if ($container->hasDefinition('fos_elastica.serializer_callback_prototype')) {
            $abstractId = 'fos_elastica.object_serializer_persister';
            $callbackId = sprintf('%s.%s.serializer.callback', $this->indexConfigs[$indexName]['reference'], $typeName);
            $arguments[] = [new Reference($callbackId), 'serialize'];
        } else {
            $abstractId = 'fos_elastica.object_persister';
            $mapping = $this->indexConfigs[$indexName]['types'][$typeName]['mapping'];
            $argument = $mapping['properties'];
            if (isset($mapping['_parent'])) {
                $argument['_parent'] = $mapping['_parent'];
            }
            $arguments[] = $argument;
        }

        $arguments[] = array_intersect_key($typeConfig['persister'], array_flip(['refresh']));

        $serviceId = sprintf('fos_elastica.object_persister.%s.%s', $indexName, $typeName);
        $serviceDef = new ChildDefinition($abstractId);
        foreach ($arguments as $i => $argument) {
            $serviceDef->replaceArgument($i, $argument);
        }

        $serviceDef->addTag('fos_elastica.persister', ['index' => $indexName, 'type' => $typeName]);

        $container->setDefinition($serviceId, $serviceDef);

        return $serviceId;
    }
private function loadObjectPersister ( array $ typeConfig , Reference $ typeRef , ContainerBuilder $ container , $ indexName , $ typeName , $ transformerId ) { if ( isset ( $ typeConfig [ 'persister' ] [ 'service' ] ) ) { return $ typeConfig [ 'persister' ] [ 'service' ] ; } $ arguments = [ $ typeRef , new Reference ( $ transformerId ) , $ typeConfig [ 'model' ] , ] ; if ( $ container -> hasDefinition ( 'fos_elastica.serializer_callback_prototype' ) ) { $ abstractId = 'fos_elastica.object_serializer_persister' ; $ callbackId = sprintf ( '%s.%s.serializer.callback' , $ this -> indexConfigs [ $ indexName ] [ 'reference' ] , $ typeName ) ; $ arguments [ ] = [ new Reference ( $ callbackId ) , 'serialize' ] ; } else { $ abstractId = 'fos_elastica.object_persister' ; $ mapping = $ this -> indexConfigs [ $ indexName ] [ 'types' ] [ $ typeName ] [ 'mapping' ] ; $ argument = $ mapping [ 'properties' ] ; if ( isset ( $ mapping [ '_parent' ] ) ) { $ argument [ '_parent' ] = $ mapping [ '_parent' ] ; } $ arguments [ ] = $ argument ; } $ arguments [ ] = array_intersect_key ( $ typeConfig [ 'persister' ] , array_flip ( [ 'refresh' ] ) ) ; $ serviceId = sprintf ( 'fos_elastica.object_persister.%s.%s' , $ indexName , $ typeName ) ; $ serviceDef = new ChildDefinition ( $ abstractId ) ; foreach ( $ arguments as $ i => $ argument ) { $ serviceDef -> replaceArgument ( $ i , $ argument ) ; } $ serviceDef -> addTag ( 'fos_elastica.persister' , [ 'index' => $ indexName , 'type' => $ typeName ] ) ; $ container -> setDefinition ( $ serviceId , $ serviceDef ) ; return $ serviceId ; }
Creates and loads an object persister for a type.

@param array            $typeConfig
@param Reference        $typeRef
@param ContainerBuilder $container
@param string           $indexName
@param string           $typeName
@param string           $transformerId

@return string
Creates and loads an object persister for a type .