Skip to content

Commit 01000d4

Browse files
Solve phpstan deprecation
1 parent 3ad6525 commit 01000d4

File tree

1 file changed

+30
-17
lines changed

1 file changed

+30
-17
lines changed

Diff for: src/Type/Doctrine/Query/QueryResultDynamicReturnTypeExtension.php

+30-17
Original file line numberDiff line numberDiff line change
@@ -209,19 +209,22 @@ static function (Type $type, callable $traverse) use ($objectManager): Type {
209209

210210
private function getScalarHydratedReturnType(Type $queryResultType): Type
211211
{
212-
if (!$queryResultType instanceof ArrayType) {
212+
if (!$queryResultType->isArray()->yes()) {
213213
return new ArrayType(new MixedType(), new MixedType());
214214
}
215215

216-
$itemType = $queryResultType->getItemType();
217-
$hasNoObject = (new ObjectWithoutClassType())->isSuperTypeOf($itemType)->no();
218-
$hasNoArray = $itemType->isArray()->no();
216+
foreach ($queryResultType->getArrays() as $arrayType) {
217+
$itemType = $arrayType->getItemType();
219218

220-
if ($hasNoArray && $hasNoObject) {
221-
return $queryResultType;
219+
if (
220+
!(new ObjectWithoutClassType())->isSuperTypeOf($itemType)->no()
221+
|| !$itemType->isArray()->no()
222+
) {
223+
new ArrayType(new MixedType(), new MixedType());
224+
}
222225
}
223226

224-
return new ArrayType(new MixedType(), new MixedType());
227+
return $queryResultType;
225228
}
226229

227230
private function getSimpleObjectHydratedReturnType(Type $queryResultType): Type
@@ -236,31 +239,41 @@ private function getSimpleObjectHydratedReturnType(Type $queryResultType): Type
236239
private function getSingleScalarHydratedReturnType(Type $queryResultType): Type
237240
{
238241
$queryResultType = $this->getScalarHydratedReturnType($queryResultType);
239-
if (!$queryResultType instanceof ConstantArrayType) {
242+
if (!$queryResultType->isConstantArray()->yes()) {
240243
return new MixedType();
241244
}
242245

243-
$values = $queryResultType->getValueTypes();
244-
if (count($values) !== 1) {
245-
return new MixedType();
246+
$types = [];
247+
foreach ($queryResultType->getConstantArrays() as $constantArrayType) {
248+
$values = $constantArrayType->getValueTypes();
249+
if (count($values) !== 1) {
250+
return new MixedType();
251+
}
252+
253+
$types[] = $constantArrayType->getFirstIterableValueType();
246254
}
247255

248-
return $queryResultType->getFirstIterableValueType();
256+
return TypeCombinator::union(...$types);
249257
}
250258

251259
private function getScalarColumnHydratedReturnType(Type $queryResultType): Type
252260
{
253261
$queryResultType = $this->getScalarHydratedReturnType($queryResultType);
254-
if (!$queryResultType instanceof ConstantArrayType) {
262+
if (!$queryResultType->isConstantArray()->yes()) {
255263
return new MixedType();
256264
}
257265

258-
$values = $queryResultType->getValueTypes();
259-
if (count($values) !== 1) {
260-
return new MixedType();
266+
$types = [];
267+
foreach ($queryResultType->getConstantArrays() as $constantArrayType) {
268+
$values = $constantArrayType->getValueTypes();
269+
if (count($values) !== 1) {
270+
return new MixedType();
271+
}
272+
273+
$types[] = $constantArrayType->getFirstIterableValueType();
261274
}
262275

263-
return $queryResultType->getFirstIterableValueType();
276+
return TypeCombinator::union(...$types);
264277
}
265278

266279
private function originalReturnType(MethodReflection $methodReflection): Type

0 commit comments

Comments
 (0)