Skip to content

Commit 6107fda

Browse files
herndlmszepeviktor
andauthored
Fix wpdb::get_results() return type (#146)
* Fix wpdb::get_results() return type Based on #145 * Remove copy of WordPress docs from tests Co-authored-by: Viktor Szépe <viktor@szepe.net> * Improve wpdb::get_row() - use list type - don't specify string keys, since PHP might cast it to int --------- Co-authored-by: Viktor Szépe <viktor@szepe.net>
1 parent b874054 commit 6107fda

File tree

3 files changed

+10
-10
lines changed

3 files changed

+10
-10
lines changed

functionMap.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,8 @@
127127
'WP_Filesystem_SSH2::dirlist' => [$filesystemDirlistReturnType],
128128
'WP_Filesystem_ftpsockets::dirlist' => [$filesystemDirlistReturnType],
129129
'wpdb::prepare' => [null, 'query' => 'literal-string'],
130-
'wpdb::get_row' => ["null|void|(\$output is 'ARRAY_A' ? array<string, mixed> : (\$output is 'ARRAY_N' ? array<int, mixed> : \stdClass))", 'output' => "'OBJECT'|'ARRAY_A'|'ARRAY_N'", 'y' => '0|positive-int'],
131-
'wpdb::get_results' => ["null|(\$output is 'ARRAY_A' ? array<string, mixed> : (\$output is 'ARRAY_N' ? array<int, mixed> : (\$output is 'OBJECT_K' ? array<string, \stdClass> : \stdClass)))", 'output' => "'OBJECT'|'OBJECT_K'|'ARRAY_A'|'ARRAY_N'"],
130+
'wpdb::get_row' => ["null|void|(\$output is 'ARRAY_A' ? array<array-key, mixed> : (\$output is 'ARRAY_N' ? list<mixed> : \stdClass))", 'output' => "'OBJECT'|'ARRAY_A'|'ARRAY_N'", 'y' => '0|positive-int'],
131+
'wpdb::get_results' => ["null|(\$output is 'ARRAY_A' ? list<array<array-key, mixed>> : (\$output is 'ARRAY_N' ? list<array<int, mixed>> : (\$output is 'OBJECT_K' ? array<array-key, \stdClass> : list<\stdClass>)))", 'output' => "'OBJECT'|'OBJECT_K'|'ARRAY_A'|'ARRAY_N'"],
132132
'get_bookmark' => ["null|(\$output is 'ARRAY_A' ? array<string, mixed> : (\$output is 'ARRAY_N' ? array<int, mixed> : \stdClass))", 'output' => "'OBJECT'|'ARRAY_A'|'ARRAY_N'"],
133133
'get_category' => ["(\$category is object ? array<array-key, mixed>|\WP_Term : array<array-key, mixed>|\WP_Term|\WP_Error|null) & (\$output is 'ARRAY_A' ? array<string, mixed>|\WP_Error|null : (\$output is 'ARRAY_N' ? array<int, mixed>|\WP_Error|null : \WP_Term|\WP_Error|null))", 'output' => "'OBJECT'|'ARRAY_A'|'ARRAY_N'"],
134134
'get_category_by_path' => ["(\$output is 'ARRAY_A' ? array<string, mixed>|\WP_Error|null : (\$output is 'ARRAY_N' ? array<int, mixed>|\WP_Error|null : \WP_Term|\WP_Error|null))", 'output' => "'OBJECT'|'ARRAY_A'|'ARRAY_N'"],

tests/data/wpdb.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
// wpdb::get_row()
1111
assertType('stdClass|void|null', wpdb::get_row());
1212
assertType('stdClass|void|null', wpdb::get_row(null, 'OBJECT'));
13-
assertType('array<string, mixed>|void|null', wpdb::get_row(null, 'ARRAY_A'));
13+
assertType('array|void|null', wpdb::get_row(null, 'ARRAY_A'));
1414
assertType('array<int, mixed>|void|null', wpdb::get_row(null, 'ARRAY_N'));
1515

1616
// wpdb::get_results()
17-
assertType('stdClass|null', wpdb::get_results());
18-
assertType('stdClass|null', wpdb::get_results(null, 'OBJECT'));
19-
assertType('array<string, stdClass>|null', wpdb::get_results(null, 'OBJECT_K'));
20-
assertType('array<string, mixed>|null', wpdb::get_results(null, 'ARRAY_A'));
21-
assertType('array<int, mixed>|null', wpdb::get_results(null, 'ARRAY_N'));
17+
assertType('array<int, array>|null', wpdb::get_results(null, 'ARRAY_A'));
18+
assertType('array<int, array<int, mixed>>|null', wpdb::get_results(null, 'ARRAY_N'));
19+
assertType('array<int, stdClass>|null', wpdb::get_results());
20+
assertType('array<int, stdClass>|null', wpdb::get_results(null, 'OBJECT'));
21+
assertType('array<stdClass>|null', wpdb::get_results(null, 'OBJECT_K'));

wordpress-stubs.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59104,7 +59104,7 @@ public function get_var($query = \null, $x = 0, $y = 0)
5910459104
* @return array|object|null|void Database query result in format specified by $output or null on failure.
5910559105
* @phpstan-param 'OBJECT'|'ARRAY_A'|'ARRAY_N' $output
5910659106
* @phpstan-param 0|positive-int $y
59107-
* @phpstan-return null|void|($output is 'ARRAY_A' ? array<string, mixed> : ($output is 'ARRAY_N' ? array<int, mixed> : \stdClass))
59107+
* @phpstan-return null|void|($output is 'ARRAY_A' ? array<array-key, mixed> : ($output is 'ARRAY_N' ? list<mixed> : \stdClass))
5910859108
*/
5910959109
public function get_row($query = \null, $output = \OBJECT, $y = 0)
5911059110
{
@@ -59143,7 +59143,7 @@ public function get_col($query = \null, $x = 0)
5914359143
* Default OBJECT.
5914459144
* @return array|object|null Database query results.
5914559145
* @phpstan-param 'OBJECT'|'OBJECT_K'|'ARRAY_A'|'ARRAY_N' $output
59146-
* @phpstan-return null|($output is 'ARRAY_A' ? array<string, mixed> : ($output is 'ARRAY_N' ? array<int, mixed> : ($output is 'OBJECT_K' ? array<string, \stdClass> : \stdClass)))
59146+
* @phpstan-return null|($output is 'ARRAY_A' ? list<array<array-key, mixed>> : ($output is 'ARRAY_N' ? list<array<int, mixed>> : ($output is 'OBJECT_K' ? array<array-key, \stdClass> : list<\stdClass>)))
5914759147
*/
5914859148
public function get_results($query = \null, $output = \OBJECT)
5914959149
{

0 commit comments

Comments
 (0)