config = $config; $this->injectableFactory = $injectableFactory; $this->metadataDataProvider = $metadataDataProvider; $this->eventDispatcher = $eventDispatcher; } public function create(): EntityManager { $entityFactory = $this->injectableFactory->create(EntityFactory::class); $repositoryFactory = $this->injectableFactory->createWith(RepositoryFactory::class, [ 'entityFactory' => $entityFactory, ]); $config = $this->config; $params = [ 'host' => $config->get('database.host'), 'port' => $config->get('database.port'), 'dbname' => $config->get('database.dbname'), 'user' => $config->get('database.user'), 'charset' => $config->get('database.charset', 'utf8'), 'password' => $config->get('database.password'), 'driver' => $config->get('database.driver'), 'platform' => $config->get('database.platform'), 'sslCA' => $config->get('database.sslCA'), 'sslCert' => $config->get('database.sslCert'), 'sslKey' => $config->get('database.sslKey'), 'sslCAPath' => $config->get('database.sslCAPath'), 'sslCipher' => $config->get('database.sslCipher'), ]; $metadata = new Metadata($this->metadataDataProvider, $this->eventDispatcher); $valueFactoryFactory = $this->injectableFactory->createWith( ValueFactoryFactory::class, [ 'ormMetadata' => $metadata, ] ); $attributeExtractorFactory = $this->injectableFactory->createWith( AttributeExtractorFactory::class, [ 'ormMetadata' => $metadata, ] ); $entityManager = $this->injectableFactory->createWith( EntityManager::class, [ 'params' => $params, 'metadata' => $metadata, 'repositoryFactory' => $repositoryFactory, 'entityFactory' => $entityFactory, 'valueFactoryFactory' => $valueFactoryFactory, 'attributeExtractorFactory' => $attributeExtractorFactory, 'eventDispatcher' => $this->eventDispatcher, ] ); return $entityManager; } }