File tree Expand file tree Collapse file tree 1 file changed +14
-0
lines changed Expand file tree Collapse file tree 1 file changed +14
-0
lines changed Original file line number Diff line number Diff line change 2
2
3
3
namespace PHPStan \Type \Doctrine ;
4
4
5
+ use Doctrine \ORM \Mapping \Entity ;
5
6
use Doctrine \Persistence \ObjectManager ;
6
7
use PHPStan \Reflection \ReflectionProvider ;
7
8
use function is_file ;
@@ -97,6 +98,19 @@ public function getResolvedRepositoryClass(): string
97
98
98
99
public function getRepositoryClass (string $ className ): string
99
100
{
101
+ if (PHP_MAJOR_VERSION >= 8 && $ this ->reflectionProvider ->hasClass ($ className )) {
102
+ $ classReflection = $ this ->reflectionProvider ->getClass ($ className )->getNativeReflection ();
103
+ if (method_exists ($ classReflection , 'getAttributes ' )) {
104
+ $ attribute = $ classReflection ->getAttributes (Entity::class)[0 ] ?? null ;
105
+ if ($ attribute !== null ) {
106
+ $ attributeInstance = $ attribute ->newInstance ();
107
+ if ($ attributeInstance ->repositoryClass !== null ) {
108
+ return $ attributeInstance ->repositoryClass ;
109
+ }
110
+ }
111
+ }
112
+ }
113
+
100
114
$ objectManager = $ this ->getObjectManager ();
101
115
if ($ objectManager === null ) {
102
116
return $ this ->getResolvedRepositoryClass ();
You can’t perform that action at this time.
0 commit comments