Skip to content

Commit 2abbe2e

Browse files
phpstan-botclaude
andcommitted
Mark pure mysqli_ result-metadata functions as hasSideEffects=false
Functions like mysqli_fetch_fields, mysqli_fetch_field_direct, mysqli_num_rows, and mysqli_num_fields always return the same value for the same mysqli_result — they read fixed metadata and don't advance any cursor. These should not be marked as having side effects. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 00cce37 commit 2abbe2e

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

bin/functionMetadata_original.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@
122122
'mysqli_fetch_assoc' => ['hasSideEffects' => true],
123123
'mysqli_fetch_column' => ['hasSideEffects' => true],
124124
'mysqli_fetch_field' => ['hasSideEffects' => true],
125-
'mysqli_fetch_field_direct' => ['hasSideEffects' => true],
126-
'mysqli_fetch_fields' => ['hasSideEffects' => true],
125+
'mysqli_fetch_field_direct' => ['hasSideEffects' => false],
126+
'mysqli_fetch_fields' => ['hasSideEffects' => false],
127127
'mysqli_fetch_lengths' => ['hasSideEffects' => true],
128128
'mysqli_fetch_object' => ['hasSideEffects' => true],
129129
'mysqli_fetch_row' => ['hasSideEffects' => true],
@@ -151,8 +151,8 @@
151151
'mysqli_more_results' => ['hasSideEffects' => true],
152152
'mysqli_multi_query' => ['hasSideEffects' => true],
153153
'mysqli_next_result' => ['hasSideEffects' => true],
154-
'mysqli_num_fields' => ['hasSideEffects' => true],
155-
'mysqli_num_rows' => ['hasSideEffects' => true],
154+
'mysqli_num_fields' => ['hasSideEffects' => false],
155+
'mysqli_num_rows' => ['hasSideEffects' => false],
156156
'mysqli_options' => ['hasSideEffects' => true],
157157
'mysqli_param_count' => ['hasSideEffects' => true],
158158
'mysqli_ping' => ['hasSideEffects' => true],

resources/functionMetadata.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1420,8 +1420,8 @@
14201420
'mysqli_fetch_assoc' => ['hasSideEffects' => true],
14211421
'mysqli_fetch_column' => ['hasSideEffects' => true],
14221422
'mysqli_fetch_field' => ['hasSideEffects' => true],
1423-
'mysqli_fetch_field_direct' => ['hasSideEffects' => true],
1424-
'mysqli_fetch_fields' => ['hasSideEffects' => true],
1423+
'mysqli_fetch_field_direct' => ['hasSideEffects' => false],
1424+
'mysqli_fetch_fields' => ['hasSideEffects' => false],
14251425
'mysqli_fetch_lengths' => ['hasSideEffects' => true],
14261426
'mysqli_fetch_object' => ['hasSideEffects' => true],
14271427
'mysqli_fetch_row' => ['hasSideEffects' => true],
@@ -1449,8 +1449,8 @@
14491449
'mysqli_more_results' => ['hasSideEffects' => true],
14501450
'mysqli_multi_query' => ['hasSideEffects' => true],
14511451
'mysqli_next_result' => ['hasSideEffects' => true],
1452-
'mysqli_num_fields' => ['hasSideEffects' => true],
1453-
'mysqli_num_rows' => ['hasSideEffects' => true],
1452+
'mysqli_num_fields' => ['hasSideEffects' => false],
1453+
'mysqli_num_rows' => ['hasSideEffects' => false],
14541454
'mysqli_options' => ['hasSideEffects' => true],
14551455
'mysqli_param_count' => ['hasSideEffects' => true],
14561456
'mysqli_ping' => ['hasSideEffects' => true],

0 commit comments

Comments
 (0)