From bf6655a534a6775d30cafa67bd801276bda1d98d Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 13 Aug 2024 23:45:21 +0200 Subject: =?UTF-8?q?VERSION=200.2=20doctrine=20ORM=20et=20entit=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/Repository/DefaultRepositoryFactory.php | 49 ++++++++++++++++++++++ .../src/Repository/Exception/InvalidFindByCall.php | 21 ++++++++++ .../Exception/InvalidMagicMethodCall.php | 27 ++++++++++++ .../orm/src/Repository/RepositoryFactory.php | 26 ++++++++++++ 4 files changed, 123 insertions(+) create mode 100644 vendor/doctrine/orm/src/Repository/DefaultRepositoryFactory.php create mode 100644 vendor/doctrine/orm/src/Repository/Exception/InvalidFindByCall.php create mode 100644 vendor/doctrine/orm/src/Repository/Exception/InvalidMagicMethodCall.php create mode 100644 vendor/doctrine/orm/src/Repository/RepositoryFactory.php (limited to 'vendor/doctrine/orm/src/Repository') diff --git a/vendor/doctrine/orm/src/Repository/DefaultRepositoryFactory.php b/vendor/doctrine/orm/src/Repository/DefaultRepositoryFactory.php new file mode 100644 index 0000000..5c408fb --- /dev/null +++ b/vendor/doctrine/orm/src/Repository/DefaultRepositoryFactory.php @@ -0,0 +1,49 @@ + + */ + private array $repositoryList = []; + + public function getRepository(EntityManagerInterface $entityManager, string $entityName): EntityRepository + { + $repositoryHash = $entityManager->getClassMetadata($entityName)->getName() . spl_object_id($entityManager); + + return $this->repositoryList[$repositoryHash] ??= $this->createRepository($entityManager, $entityName); + } + + /** + * Create a new repository instance for an entity class. + * + * @param EntityManagerInterface $entityManager The EntityManager instance. + * @param string $entityName The name of the entity. + */ + private function createRepository( + EntityManagerInterface $entityManager, + string $entityName, + ): EntityRepository { + $metadata = $entityManager->getClassMetadata($entityName); + $repositoryClassName = $metadata->customRepositoryClassName + ?: $entityManager->getConfiguration()->getDefaultRepositoryClassName(); + + return new $repositoryClassName($entityManager, $metadata); + } +} diff --git a/vendor/doctrine/orm/src/Repository/Exception/InvalidFindByCall.php b/vendor/doctrine/orm/src/Repository/Exception/InvalidFindByCall.php new file mode 100644 index 0000000..c5dd015 --- /dev/null +++ b/vendor/doctrine/orm/src/Repository/Exception/InvalidFindByCall.php @@ -0,0 +1,21 @@ + $entityName The name of the entity. + * + * @return EntityRepository + * + * @template T of object + */ + public function getRepository(EntityManagerInterface $entityManager, string $entityName): EntityRepository; +} -- cgit v1.2.3