<?php 
 
namespace Doctrine\Bundle\DoctrineBundle\Repository; 
 
use Doctrine\ORM\EntityRepository; 
use Doctrine\Persistence\ManagerRegistry; 
use LogicException; 
 
use function sprintf; 
 
/** 
 * Optional EntityRepository base class with a simplified constructor (for autowiring). 
 * 
 * To use in your class, inject the "registry" service and call 
 * the parent constructor. For example: 
 * 
 * class YourEntityRepository extends ServiceEntityRepository 
 * { 
 *     public function __construct(ManagerRegistry $registry) 
 *     { 
 *         parent::__construct($registry, YourEntity::class); 
 *     } 
 * } 
 * 
 * @template T 
 * @template-extends EntityRepository<T> 
 */ 
class ServiceEntityRepository extends EntityRepository implements ServiceEntityRepositoryInterface 
{ 
    /** 
     * @param string $entityClass The class name of the entity this repository manages 
     * @psalm-param class-string<T> $entityClass 
     */ 
    public function __construct(ManagerRegistry $registry, string $entityClass) 
    { 
        $manager = $registry->getManagerForClass($entityClass); 
 
        if ($manager === null) { 
            throw new LogicException(sprintf( 
                'Could not find the entity manager for class "%s". Check your Doctrine configuration to make sure it is configured to load this entity’s metadata.', 
                $entityClass 
            )); 
        } 
 
        parent::__construct($manager, $manager->getClassMetadata($entityClass)); 
    } 
}