@@ -10,11 +10,10 @@ class Foo
1010 public function prepareSelected (PDO $ pdo )
1111 {
1212 $ stmt = $ pdo ->prepare ('SELECT email, adaid FROM ada ' );
13- assertType ('PDOStatement<array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}> ' , $ stmt );
1413 $ stmt ->execute ();
15- assertType ('PDOStatement<array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}> ' , $ stmt );
1614
1715 foreach ($ stmt as $ row ) {
16+ assertType ('array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>} ' , $ row );
1817 assertType ('int<-32768, 32767> ' , $ row ['adaid ' ]);
1918 assertType ('string ' , $ row ['email ' ]);
2019 }
@@ -28,11 +27,17 @@ public function unionParam(PDO $pdo, $adaid, $email)
2827 {
2928 $ stmt = $ pdo ->prepare ('SELECT email, adaid FROM ada WHERE adaid = ? ' );
3029 $ stmt ->execute ([$ adaid ]);
31- assertType ('PDOStatement<array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}> ' , $ stmt );
30+
31+ foreach ($ stmt as $ row ) {
32+ assertType ('array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>} ' , $ row );
33+ }
3234
3335 $ stmt = $ pdo ->query ('SELECT email, adaid FROM ada WHERE email = ? ' );
3436 $ stmt ->execute ([$ email ]);
35- assertType ('PDOStatement<array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}> ' , $ stmt );
37+
38+ foreach ($ stmt as $ row ) {
39+ assertType ('array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>} ' , $ row );
40+ }
3641 }
3742
3843 public function queryBranches (PDO $ pdo , bool $ bool )
@@ -42,32 +47,41 @@ public function queryBranches(PDO $pdo, bool $bool)
4247 } else {
4348 $ query =
"SELECT email, adaid FROM ada WHERE email='[email protected] ' " ;
4449 }
45-
4650 $ stmt = $ pdo ->prepare ($ query );
47- assertType ('PDOStatement<array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}> ' , $ stmt );
51+
52+ foreach ($ stmt as $ row ) {
53+ assertType ('array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>} ' , $ row );
54+ }
4855 }
4956
5057 public function placeholderInData (PDO $ pdo )
5158 {
5259 $ query = "SELECT adaid FROM ada WHERE email LIKE 'hello?%' " ;
5360 $ stmt = $ pdo ->prepare ($ query );
54- assertType ('PDOStatement<array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>}> ' , $ stmt );
5561 $ stmt ->execute ();
56- assertType ('PDOStatement<array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>}> ' , $ stmt );
62+
63+ foreach ($ stmt as $ row ) {
64+ assertType ('array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>} ' , $ row );
65+ }
5766
5867 $ query = "SELECT adaid FROM ada WHERE email LIKE '%questions ?%' " ;
5968 $ stmt = $ pdo ->prepare ($ query );
60- assertType ('PDOStatement<array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>}> ' , $ stmt );
6169 $ stmt ->execute ();
62- assertType ('PDOStatement<array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>}> ' , $ stmt );
70+
71+ foreach ($ stmt as $ row ) {
72+ assertType ('array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>} ' , $ row );
73+ }
6374 }
6475
6576 public function arrayParam (PDO $ pdo )
6677 {
6778 $ query = 'SELECT adaid FROM ada WHERE adaid IN (:adaids) ' ;
6879 $ stmt = $ pdo ->prepare ($ query );
6980 $ stmt ->execute (['adaids ' => [1 , 2 , 3 ]]);
70- assertType ('PDOStatement<array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>}> ' , $ stmt );
81+
82+ foreach ($ stmt as $ row ) {
83+ assertType ('array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>} ' , $ row );
84+ }
7185 }
7286
7387 public function unspecifiedArray (PDO $ pdo , array $ idsToUpdate , string $ time )
@@ -78,7 +92,10 @@ public function unspecifiedArray(PDO $pdo, array $idsToUpdate, string $time)
7892 'ids ' => $ idsToUpdate ,
7993 'time ' => $ time ,
8094 ]);
81- assertType ('PDOStatement<array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>}> ' , $ stmt );
95+
96+ foreach ($ stmt as $ row ) {
97+ assertType ('array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>} ' , $ row );
98+ }
8299 }
83100
84101 /**
@@ -92,7 +109,10 @@ public function unspecifiedList(PDO $pdo, array $idsToUpdate, string $time)
92109 'ids ' => $ idsToUpdate ,
93110 'time ' => $ time ,
94111 ]);
95- assertType ('PDOStatement<array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>}> ' , $ stmt );
112+
113+ foreach ($ stmt as $ row ) {
114+ assertType ('array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>} ' , $ row );
115+ }
96116 }
97117
98118 /**
@@ -106,7 +126,10 @@ public function specifiedList(PDO $pdo, array $idsToUpdate, string $time)
106126 'ids ' => $ idsToUpdate ,
107127 'time ' => $ time ,
108128 ]);
109- assertType ('PDOStatement<array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>}> ' , $ stmt );
129+
130+ foreach ($ stmt as $ row ) {
131+ assertType ('array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>} ' , $ row );
132+ }
110133 }
111134
112135 /**
@@ -119,7 +142,10 @@ public function numberType(PDO $pdo, $idsToUpdate)
119142 $ stmt ->execute ([
120143 'ids ' => $ idsToUpdate ,
121144 ]);
122- assertType ('PDOStatement<array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>}> ' , $ stmt );
145+
146+ foreach ($ stmt as $ row ) {
147+ assertType ('array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>} ' , $ row );
148+ }
123149 }
124150
125151 /**
@@ -133,7 +159,10 @@ public function specifiedArray(PDO $pdo, array $idsToUpdate, string $time)
133159 'ids ' => $ idsToUpdate ,
134160 'time ' => $ time ,
135161 ]);
136- assertType ('PDOStatement<array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>}> ' , $ stmt );
162+
163+ foreach ($ stmt as $ row ) {
164+ assertType ('array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>} ' , $ row );
165+ }
137166 }
138167
139168 /**
@@ -147,7 +176,10 @@ public function specifiedIterable(PDO $pdo, iterable $idsToUpdate, string $time)
147176 'ids ' => $ idsToUpdate ,
148177 'time ' => $ time ,
149178 ]);
150- assertType ('PDOStatement<array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>}> ' , $ stmt );
179+
180+ foreach ($ stmt as $ row ) {
181+ assertType ('array{adaid: int<-32768, 32767>, 0: int<-32768, 32767>} ' , $ row );
182+ }
151183 }
152184
153185 public function noInferenceOnBug196 (PDO $ pdo , array $ minorPhpVersions , \DateTimeImmutable $ updateDate )
@@ -161,8 +193,11 @@ public function noInferenceOnBug196(PDO $pdo, array $minorPhpVersions, \DateTime
161193 'SELECT ' .implode (', ' , $ sumQueries ).' FROM ada WHERE adaid = :package '
162194 );
163195 $ stmt ->execute (['package ' => 'abc ' ]);
196+
164197 // this query is too dynamic for being analyzed.
165198 // make sure we don't infer a wrong type.
166- assertType ('PDOStatement ' , $ stmt );
199+ foreach ($ stmt as $ row ) {
200+ assertType ('mixed ' , $ row );
201+ }
167202 }
168203}
0 commit comments