public static function create(bool $private = true, MapperClassLoaderInterface $loader = null, AdvancedNameConverterInterface $nameConverter = null, string $classPrefix = 'Mapper_'): self
    {
        $classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));

        if ($loader === null) {
            $loader = new EvalLoader(new Compiler(
                (new ParserFactory())->create(ParserFactory::PREFER_PHP7),
                new ClassDiscriminatorFromClassMetadata($classMetadataFactory)
            ));
        }

        if ($private) {
            $reflectionExtractor = new PrivateReflectionExtractor();
        } else {
            $reflectionExtractor = new ReflectionExtractor();
        }

        $phpDocExtractor = new PhpDocExtractor();
        $propertyInfoExtractor = new PropertyInfoExtractor(
            [$reflectionExtractor],
            [$phpDocExtractor, $reflectionExtractor],
            [$reflectionExtractor],
            [$reflectionExtractor]
        );
        $accessorExtractor = new ReflectionAccessorExtractor($private);
        $transformerFactory = new ChainTransformerFactory();

        $sourceTargetMappingExtractor = new SourceTargetPropertiesMappingExtractor(
            $propertyInfoExtractor,
            $accessorExtractor,
            $transformerFactory,
            $classMetadataFactory
        );

        $fromTargetMappingExtractor = new FromTargetPropertiesMappingExtractor(
            $propertyInfoExtractor,
            $accessorExtractor,
            $transformerFactory,
            $classMetadataFactory,
            $nameConverter
        );

        $fromSourceMappingExtractor = new FromSourcePropertiesMappingExtractor(
            $propertyInfoExtractor,
            $accessorExtractor,
            $transformerFactory,
            $classMetadataFactory,
            $nameConverter
        );

        $autoMapper = new self($loader, new MapperConfigurationFactory(
            $sourceTargetMappingExtractor,
            $fromSourceMappingExtractor,
            $fromTargetMappingExtractor,
            $classPrefix
        ));

        $transformerFactory->addTransformerFactory(new MultipleTransformerFactory($transformerFactory));
        $transformerFactory->addTransformerFactory(new NullableTransformerFactory($transformerFactory));
        $transformerFactory->addTransformerFactory(new UniqueTypeTransformerFactory($transformerFactory));
        $transformerFactory->addTransformerFactory(new DateTimeTransformerFactory());
        $transformerFactory->addTransformerFactory(new BuiltinTransformerFactory());
        $transformerFactory->addTransformerFactory(new ArrayTransformerFactory($transformerFactory));
        $transformerFactory->addTransformerFactory(new ObjectTransformerFactory($autoMapper));

        return $autoMapper;
    }
public static function create(bool $private = true, MapperClassLoaderInterface $loader = null, AdvancedNameConverterInterface $nameConverter = null, string $classPrefix = 'Mapper_'): self
    {
        $classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));

        if ($loader === null) {
            $loader = new EvalLoader(new Compiler(
                (new ParserFactory())->create(ParserFactory::PREFER_PHP7),
                new ClassDiscriminatorFromClassMetadata($classMetadataFactory)
            ));
        }

        if ($private) {
            $reflectionExtractor = new PrivateReflectionExtractor();
        } else {
            $reflectionExtractor = new ReflectionExtractor();
        }

        $phpDocExtractor = new PhpDocExtractor();
        $propertyInfoExtractor = new PropertyInfoExtractor(
            [$reflectionExtractor],
            [$phpDocExtractor, $reflectionExtractor],
            [$reflectionExtractor],
            [$reflectionExtractor]
        );
        $accessorExtractor = new ReflectionAccessorExtractor($private);
        $transformerFactory = new ChainTransformerFactory();

        $sourceTargetMappingExtractor = new SourceTargetPropertiesMappingExtractor(
            $propertyInfoExtractor,
            $accessorExtractor,
            $transformerFactory,
            $classMetadataFactory
        );

        $fromTargetMappingExtractor = new FromTargetPropertiesMappingExtractor(
            $propertyInfoExtractor,
            $accessorExtractor,
            $transformerFactory,
            $classMetadataFactory,
            $nameConverter
        );

        $fromSourceMappingExtractor = new FromSourcePropertiesMappingExtractor(
            $propertyInfoExtractor,
            $accessorExtractor,
            $transformerFactory,
            $classMetadataFactory,
            $nameConverter
        );

        $autoMapper = new self($loader, new MapperConfigurationFactory(
            $sourceTargetMappingExtractor,
            $fromSourceMappingExtractor,
            $fromTargetMappingExtractor,
            $classPrefix
        ));

        $transformerFactory->addTransformerFactory(new MultipleTransformerFactory($transformerFactory));
        $transformerFactory->addTransformerFactory(new NullableTransformerFactory($transformerFactory));
        $transformerFactory->addTransformerFactory(new UniqueTypeTransformerFactory($transformerFactory));
        $transformerFactory->addTransformerFactory(new DateTimeTransformerFactory());
        $transformerFactory->addTransformerFactory(new BuiltinTransformerFactory());
        $transformerFactory->addTransformerFactory(new ArrayTransformerFactory($transformerFactory));
        $transformerFactory->addTransformerFactory(new ObjectTransformerFactory($autoMapper));

        return $autoMapper;
    }
public static function create ( bool $ private = true , MapperClassLoaderInterface $ loader = null , AdvancedNameConverterInterface $ nameConverter = null , string $ classPrefix = 'Mapper_' ) : self { $ classMetadataFactory = new ClassMetadataFactory ( new AnnotationLoader ( new AnnotationReader ( ) ) ) ; if ( $ loader === null ) { $ loader = new EvalLoader ( new Compiler ( ( new ParserFactory ( ) ) -> create ( ParserFactory :: PREFER_PHP7 ) , new ClassDiscriminatorFromClassMetadata ( $ classMetadataFactory ) ) ) ; } if ( $ private ) { $ reflectionExtractor = new PrivateReflectionExtractor ( ) ; } else { $ reflectionExtractor = new ReflectionExtractor ( ) ; } $ phpDocExtractor = new PhpDocExtractor ( ) ; $ propertyInfoExtractor = new PropertyInfoExtractor ( [ $ reflectionExtractor ] , [ $ phpDocExtractor , $ reflectionExtractor ] , [ $ reflectionExtractor ] , [ $ reflectionExtractor ] ) ; $ accessorExtractor = new ReflectionAccessorExtractor ( $ private ) ; $ transformerFactory = new ChainTransformerFactory ( ) ; $ sourceTargetMappingExtractor = new SourceTargetPropertiesMappingExtractor ( $ propertyInfoExtractor , $ accessorExtractor , $ transformerFactory , $ classMetadataFactory ) ; $ fromTargetMappingExtractor = new FromTargetPropertiesMappingExtractor ( $ propertyInfoExtractor , $ accessorExtractor , $ transformerFactory , $ classMetadataFactory , $ nameConverter ) ; $ fromSourceMappingExtractor = new FromSourcePropertiesMappingExtractor ( $ propertyInfoExtractor , $ accessorExtractor , $ transformerFactory , $ classMetadataFactory , $ nameConverter ) ; $ autoMapper = new self ( $ loader , new MapperConfigurationFactory ( $ sourceTargetMappingExtractor , $ fromSourceMappingExtractor , $ fromTargetMappingExtractor , $ classPrefix ) ) ; $ transformerFactory -> addTransformerFactory ( new MultipleTransformerFactory ( $ transformerFactory ) ) ; $ transformerFactory -> addTransformerFactory ( new NullableTransformerFactory ( $ transformerFactory ) ) ; $ transformerFactory -> addTransformerFactory ( new UniqueTypeTransformerFactory ( $ transformerFactory ) ) ; $ transformerFactory -> addTransformerFactory ( new DateTimeTransformerFactory ( ) ) ; $ transformerFactory -> addTransformerFactory ( new BuiltinTransformerFactory ( ) ) ; $ transformerFactory -> addTransformerFactory ( new ArrayTransformerFactory ( $ transformerFactory ) ) ; $ transformerFactory -> addTransformerFactory ( new ObjectTransformerFactory ( $ autoMapper ) ) ; return $ autoMapper ; }
Use this for test, benchmark and fast prototyping.

@internal
Use this for test benchmark and fast prototyping .