Skip to content

Commit 62ed63b

Browse files
authored
PHPStan 1.10.35, Psalm 5.15.0 (#10958)
1 parent 081ec2a commit 62ed63b

3 files changed

Lines changed: 31 additions & 42 deletions

File tree

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,14 @@
4242
"doctrine/annotations": "^1.13 || ^2",
4343
"doctrine/coding-standard": "^9.0.2 || ^12.0",
4444
"phpbench/phpbench": "^0.16.10 || ^1.0",
45-
"phpstan/phpstan": "~1.4.10 || 1.10.28",
45+
"phpstan/phpstan": "~1.4.10 || 1.10.35",
4646
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.6",
4747
"psr/log": "^1 || ^2 || ^3",
4848
"squizlabs/php_codesniffer": "3.7.2",
4949
"symfony/cache": "^4.4 || ^5.4 || ^6.0",
5050
"symfony/var-exporter": "^4.4 || ^5.4 || ^6.2",
5151
"symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0",
52-
"vimeo/psalm": "4.30.0 || 5.14.1"
52+
"vimeo/psalm": "4.30.0 || 5.15.0"
5353
},
5454
"conflict": {
5555
"doctrine/annotations": "<1.13 || >= 3.0"

lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ public function loadMetadataForClass($className, PersistenceClassMetadata $metad
128128

129129
// Evaluate named queries
130130
if (isset($xmlRoot->{'named-queries'})) {
131-
foreach ($xmlRoot->{'named-queries'}->{'named-query'} as $namedQueryElement) {
131+
foreach ($xmlRoot->{'named-queries'}->{'named-query'} ?? [] as $namedQueryElement) {
132132
$metadata->addNamedQuery(
133133
[
134134
'name' => (string) $namedQueryElement['name'],
@@ -140,7 +140,7 @@ public function loadMetadataForClass($className, PersistenceClassMetadata $metad
140140

141141
// Evaluate native named queries
142142
if (isset($xmlRoot->{'named-native-queries'})) {
143-
foreach ($xmlRoot->{'named-native-queries'}->{'named-native-query'} as $nativeQueryElement) {
143+
foreach ($xmlRoot->{'named-native-queries'}->{'named-native-query'} ?? [] as $nativeQueryElement) {
144144
$metadata->addNamedNativeQuery(
145145
[
146146
'name' => isset($nativeQueryElement['name']) ? (string) $nativeQueryElement['name'] : null,
@@ -154,7 +154,7 @@ public function loadMetadataForClass($className, PersistenceClassMetadata $metad
154154

155155
// Evaluate sql result set mapping
156156
if (isset($xmlRoot->{'sql-result-set-mappings'})) {
157-
foreach ($xmlRoot->{'sql-result-set-mappings'}->{'sql-result-set-mapping'} as $rsmElement) {
157+
foreach ($xmlRoot->{'sql-result-set-mappings'}->{'sql-result-set-mapping'} ?? [] as $rsmElement) {
158158
$entities = [];
159159
$columns = [];
160160
foreach ($rsmElement as $entityElement) {
@@ -240,7 +240,7 @@ public function loadMetadataForClass($className, PersistenceClassMetadata $metad
240240
// Evaluate <indexes...>
241241
if (isset($xmlRoot->indexes)) {
242242
$metadata->table['indexes'] = [];
243-
foreach ($xmlRoot->indexes->index as $indexXml) {
243+
foreach ($xmlRoot->indexes->index ?? [] as $indexXml) {
244244
$index = [];
245245

246246
if (isset($indexXml['columns']) && ! empty($indexXml['columns'])) {
@@ -283,7 +283,7 @@ public function loadMetadataForClass($className, PersistenceClassMetadata $metad
283283
// Evaluate <unique-constraints..>
284284
if (isset($xmlRoot->{'unique-constraints'})) {
285285
$metadata->table['uniqueConstraints'] = [];
286-
foreach ($xmlRoot->{'unique-constraints'}->{'unique-constraint'} as $uniqueXml) {
286+
foreach ($xmlRoot->{'unique-constraints'}->{'unique-constraint'} ?? [] as $uniqueXml) {
287287
$unique = [];
288288

289289
if (isset($uniqueXml['columns']) && ! empty($uniqueXml['columns'])) {
@@ -370,7 +370,7 @@ public function loadMetadataForClass($className, PersistenceClassMetadata $metad
370370

371371
// Evaluate <id ...> mappings
372372
$associationIds = [];
373-
foreach ($xmlRoot->id as $idElement) {
373+
foreach ($xmlRoot->id ?? [] as $idElement) {
374374
if (isset($idElement['association-key']) && $this->evaluateBoolean($idElement['association-key'])) {
375375
$associationIds[(string) $idElement['name']] = true;
376376
continue;
@@ -439,7 +439,7 @@ public function loadMetadataForClass($className, PersistenceClassMetadata $metad
439439
if (isset($oneToOneElement->{'join-column'})) {
440440
$joinColumns[] = $this->joinColumnToArray($oneToOneElement->{'join-column'});
441441
} elseif (isset($oneToOneElement->{'join-columns'})) {
442-
foreach ($oneToOneElement->{'join-columns'}->{'join-column'} as $joinColumnElement) {
442+
foreach ($oneToOneElement->{'join-columns'}->{'join-column'} ?? [] as $joinColumnElement) {
443443
$joinColumns[] = $this->joinColumnToArray($joinColumnElement);
444444
}
445445
}
@@ -490,7 +490,7 @@ public function loadMetadataForClass($className, PersistenceClassMetadata $metad
490490

491491
if (isset($oneToManyElement->{'order-by'})) {
492492
$orderBy = [];
493-
foreach ($oneToManyElement->{'order-by'}->{'order-by-field'} as $orderByField) {
493+
foreach ($oneToManyElement->{'order-by'}->{'order-by-field'} ?? [] as $orderByField) {
494494
$orderBy[(string) $orderByField['name']] = isset($orderByField['direction'])
495495
? (string) $orderByField['direction']
496496
: Criteria::ASC;
@@ -542,7 +542,7 @@ public function loadMetadataForClass($className, PersistenceClassMetadata $metad
542542
if (isset($manyToOneElement->{'join-column'})) {
543543
$joinColumns[] = $this->joinColumnToArray($manyToOneElement->{'join-column'});
544544
} elseif (isset($manyToOneElement->{'join-columns'})) {
545-
foreach ($manyToOneElement->{'join-columns'}->{'join-column'} as $joinColumnElement) {
545+
foreach ($manyToOneElement->{'join-columns'}->{'join-column'} ?? [] as $joinColumnElement) {
546546
$joinColumns[] = $this->joinColumnToArray($joinColumnElement);
547547
}
548548
}
@@ -601,11 +601,11 @@ public function loadMetadataForClass($className, PersistenceClassMetadata $metad
601601
$joinTable['options'] = $this->parseOptions($joinTableElement->options->children());
602602
}
603603

604-
foreach ($joinTableElement->{'join-columns'}->{'join-column'} as $joinColumnElement) {
604+
foreach ($joinTableElement->{'join-columns'}->{'join-column'} ?? [] as $joinColumnElement) {
605605
$joinTable['joinColumns'][] = $this->joinColumnToArray($joinColumnElement);
606606
}
607607

608-
foreach ($joinTableElement->{'inverse-join-columns'}->{'join-column'} as $joinColumnElement) {
608+
foreach ($joinTableElement->{'inverse-join-columns'}->{'join-column'} ?? [] as $joinColumnElement) {
609609
$joinTable['inverseJoinColumns'][] = $this->joinColumnToArray($joinColumnElement);
610610
}
611611

@@ -618,7 +618,7 @@ public function loadMetadataForClass($className, PersistenceClassMetadata $metad
618618

619619
if (isset($manyToManyElement->{'order-by'})) {
620620
$orderBy = [];
621-
foreach ($manyToManyElement->{'order-by'}->{'order-by-field'} as $orderByField) {
621+
foreach ($manyToManyElement->{'order-by'}->{'order-by-field'} ?? [] as $orderByField) {
622622
$orderBy[(string) $orderByField['name']] = isset($orderByField['direction'])
623623
? (string) $orderByField['direction']
624624
: Criteria::ASC;
@@ -644,9 +644,9 @@ public function loadMetadataForClass($className, PersistenceClassMetadata $metad
644644

645645
// Evaluate association-overrides
646646
if (isset($xmlRoot->{'attribute-overrides'})) {
647-
foreach ($xmlRoot->{'attribute-overrides'}->{'attribute-override'} as $overrideElement) {
647+
foreach ($xmlRoot->{'attribute-overrides'}->{'attribute-override'} ?? [] as $overrideElement) {
648648
$fieldName = (string) $overrideElement['name'];
649-
foreach ($overrideElement->field as $field) {
649+
foreach ($overrideElement->field ?? [] as $field) {
650650
$mapping = $this->columnToArray($field);
651651
$mapping['fieldName'] = $fieldName;
652652
$metadata->setAttributeOverride($fieldName, $mapping);
@@ -656,14 +656,14 @@ public function loadMetadataForClass($className, PersistenceClassMetadata $metad
656656

657657
// Evaluate association-overrides
658658
if (isset($xmlRoot->{'association-overrides'})) {
659-
foreach ($xmlRoot->{'association-overrides'}->{'association-override'} as $overrideElement) {
659+
foreach ($xmlRoot->{'association-overrides'}->{'association-override'} ?? [] as $overrideElement) {
660660
$fieldName = (string) $overrideElement['name'];
661661
$override = [];
662662

663663
// Check for join-columns
664664
if (isset($overrideElement->{'join-columns'})) {
665665
$joinColumns = [];
666-
foreach ($overrideElement->{'join-columns'}->{'join-column'} as $joinColumnElement) {
666+
foreach ($overrideElement->{'join-columns'}->{'join-column'} ?? [] as $joinColumnElement) {
667667
$joinColumns[] = $this->joinColumnToArray($joinColumnElement);
668668
}
669669

@@ -685,13 +685,13 @@ public function loadMetadataForClass($className, PersistenceClassMetadata $metad
685685
}
686686

687687
if (isset($joinTableElement->{'join-columns'})) {
688-
foreach ($joinTableElement->{'join-columns'}->{'join-column'} as $joinColumnElement) {
688+
foreach ($joinTableElement->{'join-columns'}->{'join-column'} ?? [] as $joinColumnElement) {
689689
$joinTable['joinColumns'][] = $this->joinColumnToArray($joinColumnElement);
690690
}
691691
}
692692

693693
if (isset($joinTableElement->{'inverse-join-columns'})) {
694-
foreach ($joinTableElement->{'inverse-join-columns'}->{'join-column'} as $joinColumnElement) {
694+
foreach ($joinTableElement->{'inverse-join-columns'}->{'join-column'} ?? [] as $joinColumnElement) {
695695
$joinTable['inverseJoinColumns'][] = $this->joinColumnToArray($joinColumnElement);
696696
}
697697
}
@@ -715,14 +715,14 @@ public function loadMetadataForClass($className, PersistenceClassMetadata $metad
715715

716716
// Evaluate <lifecycle-callbacks...>
717717
if (isset($xmlRoot->{'lifecycle-callbacks'})) {
718-
foreach ($xmlRoot->{'lifecycle-callbacks'}->{'lifecycle-callback'} as $lifecycleCallback) {
718+
foreach ($xmlRoot->{'lifecycle-callbacks'}->{'lifecycle-callback'} ?? [] as $lifecycleCallback) {
719719
$metadata->addLifecycleCallback((string) $lifecycleCallback['method'], constant('Doctrine\ORM\Events::' . (string) $lifecycleCallback['type']));
720720
}
721721
}
722722

723723
// Evaluate entity listener
724724
if (isset($xmlRoot->{'entity-listeners'})) {
725-
foreach ($xmlRoot->{'entity-listeners'}->{'entity-listener'} as $listenerElement) {
725+
foreach ($xmlRoot->{'entity-listeners'}->{'entity-listener'} ?? [] as $listenerElement) {
726726
$className = (string) $listenerElement['class'];
727727
// Evaluate the listener using naming convention.
728728
if ($listenerElement->count() === 0) {
@@ -744,16 +744,14 @@ public function loadMetadataForClass($className, PersistenceClassMetadata $metad
744744
/**
745745
* Parses (nested) option elements.
746746
*
747-
* @param SimpleXMLElement $options The XML element.
748-
*
749747
* @return mixed[] The options array.
750748
* @psalm-return array<int|string, array<int|string, mixed|string>|bool|string>
751749
*/
752-
private function parseOptions(SimpleXMLElement $options): array
750+
private function parseOptions(?SimpleXMLElement $options): array
753751
{
754752
$array = [];
755753

756-
foreach ($options as $option) {
754+
foreach ($options ?? [] as $option) {
757755
if ($option->count()) {
758756
$value = $this->parseOptions($option->children());
759757
} else {
@@ -816,7 +814,7 @@ private function joinColumnToArray(SimpleXMLElement $joinColumnElement): array
816814
}
817815

818816
if (isset($joinColumnElement['options'])) {
819-
$joinColumn['options'] = $this->parseOptions($joinColumnElement['options']->children());
817+
$joinColumn['options'] = $this->parseOptions($joinColumnElement['options'] ? $joinColumnElement['options']->children() : null);
820818
}
821819

822820
return $joinColumn;
@@ -972,19 +970,19 @@ protected function loadMappingFile($file)
972970

973971
if (isset($xmlElement->entity)) {
974972
foreach ($xmlElement->entity as $entityElement) {
975-
/** @psalm-var class-string */
973+
/** @psalm-var class-string $entityName */
976974
$entityName = (string) $entityElement['name'];
977975
$result[$entityName] = $entityElement;
978976
}
979977
} elseif (isset($xmlElement->{'mapped-superclass'})) {
980978
foreach ($xmlElement->{'mapped-superclass'} as $mappedSuperClass) {
981-
/** @psalm-var class-string */
979+
/** @psalm-var class-string $className */
982980
$className = (string) $mappedSuperClass['name'];
983981
$result[$className] = $mappedSuperClass;
984982
}
985983
} elseif (isset($xmlElement->embeddable)) {
986984
foreach ($xmlElement->embeddable as $embeddableElement) {
987-
/** @psalm-var class-string */
985+
/** @psalm-var class-string $embeddableName */
988986
$embeddableName = (string) $embeddableElement['name'];
989987
$result[$embeddableName] = $embeddableElement;
990988
}

psalm-baseline.xml

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<files psalm-version="5.14.1@b9d355e0829c397b9b3b47d0c0ed042a8a70284d">
2+
<files psalm-version="5.15.0@5c774aca4746caf3d239d9c8cadb9f882ca29352">
33
<file src="lib/Doctrine/ORM/AbstractQuery.php">
44
<DeprecatedClass>
55
<code>IterableResult</code>
@@ -916,13 +916,12 @@
916916
<code><![CDATA[$metadata->table]]></code>
917917
</InvalidPropertyAssignmentValue>
918918
<InvalidPropertyFetch>
919-
<code><![CDATA[$indexXml->options]]></code>
920-
<code><![CDATA[$uniqueXml->options]]></code>
921919
<code><![CDATA[$xmlRoot->{'discriminator-column'}]]></code>
922920
<code><![CDATA[$xmlRoot->{'discriminator-map'}]]></code>
923921
</InvalidPropertyFetch>
924922
<InvalidReturnStatement>
925923
<code>$mapping</code>
924+
<code>$result</code>
926925
<code><![CDATA[[
927926
'usage' => $usage,
928927
'region' => $region,
@@ -946,6 +945,7 @@
946945
* options?: array
947946
* }</code>
948947
<code>array{usage: int|null, region?: string}</code>
948+
<code>loadMappingFile</code>
949949
</InvalidReturnType>
950950
<MissingParamType>
951951
<code>$fileExtension</code>
@@ -955,15 +955,9 @@
955955
<code>$metadata</code>
956956
</MoreSpecificImplementedParamType>
957957
<NoInterfaceProperties>
958-
<code><![CDATA[$indexXml->options]]></code>
959-
<code><![CDATA[$uniqueXml->options]]></code>
960958
<code><![CDATA[$xmlRoot->{'discriminator-column'}]]></code>
961959
<code><![CDATA[$xmlRoot->{'discriminator-map'}]]></code>
962960
</NoInterfaceProperties>
963-
<PossiblyNullArgument>
964-
<code><![CDATA[$joinColumnElement['options']->children()]]></code>
965-
<code><![CDATA[$option->children()]]></code>
966-
</PossiblyNullArgument>
967961
<TypeDoesNotContainType>
968962
<code><![CDATA[$xmlRoot->getName() === 'embeddable']]></code>
969963
<code><![CDATA[$xmlRoot->getName() === 'entity']]></code>
@@ -2557,9 +2551,6 @@
25572551
<NonInvariantDocblockPropertyType>
25582552
<code>$_extension</code>
25592553
</NonInvariantDocblockPropertyType>
2560-
<PossiblyFalseArgument>
2561-
<code><![CDATA[$simpleXml->asXML()]]></code>
2562-
</PossiblyFalseArgument>
25632554
<RedundantCondition>
25642555
<code><![CDATA[$field['associationKey']]]></code>
25652556
<code><![CDATA[isset($field['associationKey']) && $field['associationKey']]]></code>

0 commit comments

Comments
 (0)