Skip to content

Commit 3e24f78

Browse files
committed
Support for a custom repository class
1 parent 5fa20b8 commit 3e24f78

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

extension.neon

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
parameters:
2+
doctrine:
3+
repositoryClass: Doctrine\ORM\EntityRepository
4+
15
services:
26
-
37
class: PHPStan\Reflection\Doctrine\DoctrineSelectableClassReflectionExtension
@@ -13,6 +17,8 @@ services:
1317
- phpstan.broker.dynamicMethodReturnTypeExtension
1418
-
1519
class: PHPStan\Type\Doctrine\EntityManagerGetRepositoryDynamicReturnTypeExtension
20+
arguments:
21+
repositoryClass: %doctrine.repositoryClass%
1622
tags:
1723
- phpstan.broker.dynamicMethodReturnTypeExtension
1824
-

src/Type/Doctrine/EntityManagerGetRepositoryDynamicReturnTypeExtension.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,16 @@
1010
class EntityManagerGetRepositoryDynamicReturnTypeExtension implements \PHPStan\Type\DynamicMethodReturnTypeExtension
1111
{
1212

13+
/**
14+
* @var string
15+
*/
16+
private $repositoryClass;
17+
18+
public function __construct(string $repositoryClass)
19+
{
20+
$this->repositoryClass = $repositoryClass;
21+
}
22+
1323
public static function getClass(): string
1424
{
1525
return \Doctrine\ORM\EntityManager::class;
@@ -48,7 +58,7 @@ public function getTypeFromMethodCall(
4858
$class = $scope->getClassReflection()->getName();
4959
}
5060

51-
return new EntityRepositoryType($class);
61+
return new EntityRepositoryType($class, $this->repositoryClass);
5262
}
5363

5464
}

src/Type/Doctrine/EntityRepositoryType.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ class EntityRepositoryType extends ObjectType
1212
*/
1313
private $entityClass;
1414

15-
public function __construct(string $entityClass)
15+
public function __construct(string $entityClass, string $repositoryClass)
1616
{
17-
parent::__construct(\Doctrine\ORM\EntityRepository::class);
17+
parent::__construct($repositoryClass);
1818
$this->entityClass = $entityClass;
1919
}
2020

0 commit comments

Comments
 (0)