/** * Create a new configuration * * @param array $config * @param bool $devMode * * @return Configuration */ public static function create(array $config, $devMode = true) { $resolver = self::buildOptionsResolver(); $config = $resolver->resolve($config); $conf = new self(); $map = new IdentityMap(); $metadataRegistry = self::buildMetadataregistry($config, $devMode); foreach ($metadataRegistry->getMetadatas() as $meta) { $map->addClass($meta->getClass()); if ($meta->hasAlias()) { $map->addAlias($meta->getAlias(), $meta->getClass()); } } $proxyConfig = new ProxyConfig(); if ($devMode === true) { $path = $config['cache'] . self::PROXIES_DIRECTORY; $filesystem = new Filesystem(); if (!$filesystem->exists($path)) { $filesystem->mkdir($path); } $proxyConfig->setProxiesTargetDir($path); spl_autoload_register($proxyConfig->getProxyAutoloader()); } $conf->setIdentityMap($map)->setMetadataRegistry($metadataRegistry)->setProxyFactory(new LazyLoadingGhostFactory($proxyConfig)); return $conf; }