![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/vendor/doctrine/orm/src/Repository/ |
<?php declare(strict_types=1); namespace Doctrine\ORM\Repository; use Doctrine\Deprecations\Deprecation; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityRepository; use Doctrine\Persistence\ObjectRepository; use function spl_object_id; /** * This factory is used to create default repository objects for entities at runtime. */ final class DefaultRepositoryFactory implements RepositoryFactory { /** * The list of EntityRepository instances. * * @var ObjectRepository[] * @psalm-var array<string, ObjectRepository> */ private $repositoryList = []; /** * {@inheritDoc} */ public function getRepository(EntityManagerInterface $entityManager, $entityName): ObjectRepository { $repositoryHash = $entityManager->getClassMetadata($entityName)->getName() . spl_object_id($entityManager); if (isset($this->repositoryList[$repositoryHash])) { return $this->repositoryList[$repositoryHash]; } 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 ): ObjectRepository { $metadata = $entityManager->getClassMetadata($entityName); $repositoryClassName = $metadata->customRepositoryClassName ?: $entityManager->getConfiguration()->getDefaultRepositoryClassName(); $repository = new $repositoryClassName($entityManager, $metadata); if (! $repository instanceof EntityRepository) { Deprecation::trigger( 'doctrine/orm', 'https://github.com/doctrine/orm/pull/9533', 'Configuring %s as repository class is deprecated because it does not extend %s.', $repositoryClassName, EntityRepository::class ); } return $repository; } }