Skip to content

Commit 7397920

Browse files
Bleeding edge - more literal-string typehints
1 parent 91bd1b1 commit 7397920

File tree

5 files changed

+196
-7
lines changed

5 files changed

+196
-7
lines changed

extension.neon

-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ parameters:
2424
- stubs/EntityManager.stub
2525
- stubs/EntityManagerDecorator.stub
2626
- stubs/EntityManagerInterface.stub
27-
- stubs/EntityRepository.stub
2827
- stubs/ServiceEntityRepository.stub
2928
- stubs/MongoClassMetadataInfo.stub
3029

src/Stubs/Doctrine/StubFilesExtensionLoader.php

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public function getFiles(): array
2828

2929
return [
3030
$path . '/ORM/QueryBuilder.stub',
31+
$path . '/EntityRepository.stub',
3132
];
3233
}
3334

stubs/ORM/QueryBuilder.stub

+7-6
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@ class QueryBuilder
1414

1515
}
1616

17-
/**
18-
* @return Query<mixed>
19-
*/
20-
public function getQuery()
21-
{
22-
}
17+
/**
18+
* @return Query<mixed>
19+
*/
20+
public function getQuery()
21+
{
22+
}
23+
2324
}
+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<?php
2+
3+
namespace Doctrine\ORM;
4+
5+
use Doctrine\Common\Collections\Criteria;
6+
use Doctrine\Persistence\ObjectRepository;
7+
8+
/**
9+
* @template TEntityClass of object
10+
* @implements ObjectRepository<TEntityClass>
11+
*/
12+
class EntityRepository implements ObjectRepository
13+
{
14+
15+
/** @var class-string<TEntityClass> */
16+
protected $_entityName;
17+
18+
/**
19+
* @phpstan-param mixed $id
20+
* @phpstan-param int|null $lockMode
21+
* @phpstan-param int|null $lockVersion
22+
* @phpstan-return TEntityClass|null
23+
*/
24+
public function find($id, $lockMode = null, $lockVersion = null);
25+
26+
/**
27+
* @phpstan-return TEntityClass[]
28+
*/
29+
public function findAll();
30+
31+
/**
32+
* @phpstan-param array<string, mixed> $criteria
33+
* @phpstan-param array<string, string>|null $orderBy
34+
* @phpstan-param int|null $limit
35+
* @phpstan-param int|null $offset
36+
* @phpstan-return TEntityClass[]
37+
*/
38+
public function findBy(array $criteria, ?array $orderBy = null, $limit = null, $offset = null);
39+
40+
/**
41+
* @phpstan-param array<string, mixed> $criteria The criteria.
42+
* @phpstan-param array<string, string>|null $orderBy
43+
* @phpstan-return TEntityClass|null
44+
*/
45+
public function findOneBy(array $criteria, array $orderBy = null);
46+
47+
/**
48+
* @phpstan-return class-string<TEntityClass>
49+
*/
50+
public function getClassName();
51+
52+
/**
53+
* @phpstan-return class-string<TEntityClass>
54+
*/
55+
protected function getEntityName();
56+
57+
/**
58+
* @param \Doctrine\Common\Collections\Criteria $criteria
59+
*
60+
* @return \Doctrine\Common\Collections\Collection
61+
*
62+
* @psalm-return \Doctrine\Common\Collections\Collection<int, TEntityClass>
63+
*/
64+
public function matching(Criteria $criteria);
65+
66+
/**
67+
* @param literal-string $alias
68+
* @param literal-string|null $indexBy
69+
*
70+
* @return QueryBuilder
71+
*/
72+
public function createQueryBuilder($alias, $indexBy = null);
73+
74+
}

stubs/bleedingEdge/ORM/QueryBuilder.stub

+114
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace Doctrine\ORM;
44

5+
use Doctrine\ORM\Query\Expr;
6+
57
class QueryBuilder
68
{
79

@@ -21,6 +23,118 @@ class QueryBuilder
2123

2224
}
2325

26+
/**
27+
* @param string $dqlPartName
28+
* @param literal-string|object|list<literal-string>|array{join: array<int|string, object>} $dqlPart
29+
* @param bool $append
30+
*
31+
* @return $this
32+
*/
33+
public function add($dqlPartName, $dqlPart, $append = false)
34+
{
35+
36+
}
37+
38+
/**
39+
* @param literal-string|null $delete
40+
* @param literal-string|null $alias
41+
*
42+
* @return $this
43+
*/
44+
public function delete($delete = null, $alias = null)
45+
{
46+
47+
}
48+
49+
/**
50+
* @param literal-string|null $update
51+
* @param literal-string|null $alias
52+
*
53+
* @return $this
54+
*/
55+
public function update($update = null, $alias = null)
56+
{
57+
58+
}
59+
60+
/**
61+
* @param literal-string $from
62+
* @param literal-string $alias
63+
* @param literal-string|null $indexBy
64+
*
65+
* @return $this
66+
*/
67+
public function from($from, $alias, $indexBy = null)
68+
{
69+
70+
}
71+
72+
/**
73+
* @param literal-string $join
74+
* @param literal-string $alias
75+
* @param Expr\Join::ON|Expr\Join::WITH|null $conditionType
76+
* @param literal-string|Expr\Comparison|Expr\Composite|null $condition
77+
* @param literal-string|null $indexBy
78+
*
79+
* @return $this
80+
*/
81+
public function innerJoin($join, $alias, $conditionType = null, $condition = null, $indexBy = null)
82+
{
83+
84+
}
85+
86+
/**
87+
* @param literal-string $join
88+
* @param literal-string $alias
89+
* @param Expr\Join::ON|Expr\Join::WITH|null $conditionType
90+
* @param literal-string|Expr\Comparison|Expr\Composite|null $condition
91+
* @param literal-string|null $indexBy
92+
*
93+
* @return $this
94+
*/
95+
public function leftJoin($join, $alias, $conditionType = null, $condition = null, $indexBy = null)
96+
{
97+
98+
}
99+
100+
/**
101+
* @param literal-string $join
102+
* @param literal-string $alias
103+
* @param Expr\Join::ON|Expr\Join::WITH|null $conditionType
104+
* @param literal-string|Expr\Comparison|Expr\Composite|null $condition
105+
* @param literal-string|null $indexBy
106+
*
107+
* @return $this
108+
*/
109+
public function join($join, $alias, $conditionType = null, $condition = null, $indexBy = null)
110+
{
111+
112+
}
113+
114+
/**
115+
* @return literal-string
116+
*/
117+
public function getRootAlias()
118+
{
119+
120+
}
121+
122+
/**
123+
* @return list<literal-string>
124+
*/
125+
public function getRootAliases()
126+
{
127+
128+
}
129+
130+
/**
131+
* @return list<literal-string>
132+
*/
133+
public function getAllAlias()
134+
{
135+
136+
}
137+
24138
/**
25139
* @param literal-string|object|array<mixed> $predicates
26140
* @return $this

0 commit comments

Comments
 (0)