Skip to content

Clean up array function signatures for named parameters #6046

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 6 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Zend/tests/bug31720.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ try {
?>
--EXPECTF--
Warning: Undefined variable $nonesuchvar in %s on line %d
array_walk(): Argument #2 ($funcname) must be a valid callback, first array member is not a valid class name or object
array_walk(): Argument #2 ($callback) must be a valid callback, first array member is not a valid class name or object
4 changes: 2 additions & 2 deletions Zend/tests/named_params/missing_param.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ try {
}

// This works fine, as search_value is explicitly specified.
var_dump(array_keys([41, 42], search_value: 42, strict: true));
var_dump(array_keys([41, 42], filter_value: 42, strict: true));

?>
--EXPECT--
test(): Argument #2 ($b) not passed
array_keys(): Argument #1 ($array) not passed
array_keys(): Argument #2 ($search_value) must be passed explicitly, because the default value is not known
array_keys(): Argument #2 ($filter_value) must be passed explicitly, because the default value is not known
array(1) {
[0]=>
int(1)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Name: array
Is passed by reference: yes
Can be passed by value: no

Name: sort_flags
Name: flags
Is passed by reference: no
Can be passed by value: yes

Expand Down
2 changes: 1 addition & 1 deletion ext/spl/tests/arrayObject_asort_basic1.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ object(ArrayObject)#%d (1) {
int(4)
}
}
asort(): Argument #2 ($sort_flags) must be of type int, string given
asort(): Argument #2 ($flags) must be of type int, string given
object(ArrayObject)#%d (1) {
["storage":"ArrayObject":private]=>
array(3) {
Expand Down
2 changes: 1 addition & 1 deletion ext/spl/tests/arrayObject_ksort_basic1.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ object(ArrayObject)#%d (1) {
int(3)
}
}
ksort(): Argument #2 ($sort_flags) must be of type int, string given
ksort(): Argument #2 ($flags) must be of type int, string given
object(ArrayObject)#2 (1) {
["storage":"ArrayObject":private]=>
array(4) {
Expand Down
44 changes: 22 additions & 22 deletions ext/standard/basic_functions.stub.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,11 @@ function stream_wrapper_restore(string $protocol): bool {}

/* array.c */

function array_push(array &$stack, mixed ...$args): int {}
function array_push(array &$stack, mixed ...$values): int {}

function krsort(array &$array, int $sort_flags = SORT_REGULAR): bool {}
function krsort(array &$array, int $flags = SORT_REGULAR): bool {}

function ksort(array &$array, int $sort_flags = SORT_REGULAR): bool {}
function ksort(array &$array, int $flags = SORT_REGULAR): bool {}

/** @param Countable|array $var */
function count($var, int $mode = COUNT_NORMAL): int {}
Expand All @@ -76,19 +76,19 @@ function natsort(array &$array): bool {}

function natcasesort(array &$array): bool {}

function asort(array &$array, int $sort_flags = SORT_REGULAR): bool {}
function asort(array &$array, int $flags = SORT_REGULAR): bool {}

function arsort(array &$array, int $sort_flags = SORT_REGULAR): bool {}
function arsort(array &$array, int $flags = SORT_REGULAR): bool {}

function sort(array &$array, int $sort_flags = SORT_REGULAR): bool {}
function sort(array &$array, int $flags = SORT_REGULAR): bool {}

function rsort(array &$array, int $sort_flags = SORT_REGULAR): bool {}
function rsort(array &$array, int $flags = SORT_REGULAR): bool {}

function usort(array &$array, callable $cmp_function): bool {}
function usort(array &$array, callable $callback): bool {}

function uasort(array &$array, callable $cmp_function): bool {}
function uasort(array &$array, callable $callback): bool {}

function uksort(array &$array, callable $cmp_function): bool {}
function uksort(array &$array, callable $callback): bool {}

function end(array|object &$arg): mixed {}

Expand All @@ -109,9 +109,9 @@ function min(mixed $arg, mixed ...$args): mixed {}

function max(mixed $arg, mixed ...$args): mixed {}

function array_walk(array|object &$input, callable $funcname, mixed $userdata = UNKNOWN): bool {}
function array_walk(array|object &$input, callable $callback, mixed $argument = UNKNOWN): bool {}

function array_walk_recursive(array|object &$input, callable $funcname, mixed $userdata = UNKNOWN): bool {}
function array_walk_recursive(array|object &$input, callable $callback, mixed $argument = UNKNOWN): bool {}

function in_array(mixed $needle, array $haystack, bool $strict = false): bool {}

Expand All @@ -126,9 +126,9 @@ function extract(array &$array, int $extract_type = EXTR_OVERWRITE, string $pref
*/
function compact($var_name, ...$var_names): array {}

function array_fill(int $start_key, int $num, mixed $val): array {}
function array_fill(int $start_key, int $count, mixed $value): array {}

function array_fill_keys(array $keys, mixed $val): array {}
function array_fill_keys(array $keys, mixed $value): array {}

/**
* @param string|int|float $low
Expand All @@ -142,21 +142,21 @@ function array_pop(array &$stack): mixed {}

function array_shift(array &$stack): mixed {}

function array_unshift(array &$stack, mixed ...$vars): int {}
function array_unshift(array &$stack, mixed ...$values): int {}

function array_splice(array &$array, int $offset, ?int $length = null, mixed $replacement = []): array {}
function array_splice(array &$array, int $offset, ?int $length = null, mixed $replacements = []): array {}

function array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array {}

function array_merge(array ...$arrays): array {}

function array_merge_recursive(array ...$arrays): array {}

function array_replace(array $array1, array ...$arrays): array {}
function array_replace(array $array, array ...$replacements): array {}

function array_replace_recursive(array $array1, array ...$arrays): array {}
function array_replace_recursive(array $array, array ...$replacements): array {}

function array_keys(array $array, mixed $search_value = UNKNOWN, bool $strict = false): array {}
function array_keys(array $array, mixed $filter_value = UNKNOWN, bool $strict = false): array {}

function array_key_first(array $array): int|string|null {}

Expand Down Expand Up @@ -238,16 +238,16 @@ function array_reduce(array $array, callable $callback, mixed $initial = null):

function array_filter(array $array, ?callable $callback = null, int $use_keys = 0): array {}

function array_map(?callable $callback, array $array1, array ...$arrays): array {}
function array_map(?callable $callback, array $array, array ...$arrays): array {}

/** @param string|int $key */
function array_key_exists($key, array $search): bool {}
function array_key_exists($key, array $array): bool {}

/**
* @param string|int $key
* @alias array_key_exists
*/
function key_exists($key, array $search): bool {}
function key_exists($key, array $array): bool {}

function array_chunk(array $array, int $size, bool $preserve_keys = false): array {}

Expand Down
35 changes: 16 additions & 19 deletions ext/standard/basic_functions_arginfo.h
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* This is a generated file, edit the .stub.php file instead.
* Stub hash: 251fc9f272492ab76c4a1a1dabcd768269cf1bde */
* Stub hash: 26683100d272e35a6318e0eaece65dc3761b7b03 */

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_set_time_limit, 0, 1, _IS_BOOL, 0)
ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0)
Expand Down Expand Up @@ -71,12 +71,12 @@ ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_push, 0, 1, IS_LONG, 0)
ZEND_ARG_TYPE_INFO(1, stack, IS_ARRAY, 0)
ZEND_ARG_VARIADIC_TYPE_INFO(0, args, IS_MIXED, 0)
ZEND_ARG_VARIADIC_TYPE_INFO(0, values, IS_MIXED, 0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_krsort, 0, 1, _IS_BOOL, 0)
ZEND_ARG_TYPE_INFO(1, array, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, sort_flags, IS_LONG, 0, "SORT_REGULAR")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "SORT_REGULAR")
ZEND_END_ARG_INFO()

#define arginfo_ksort arginfo_krsort
Expand Down Expand Up @@ -104,7 +104,7 @@ ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_usort, 0, 2, _IS_BOOL, 0)
ZEND_ARG_TYPE_INFO(1, array, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, cmp_function, IS_CALLABLE, 0)
ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
ZEND_END_ARG_INFO()

#define arginfo_uasort arginfo_usort
Expand Down Expand Up @@ -140,8 +140,8 @@ ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_walk, 0, 2, _IS_BOOL, 0)
ZEND_ARG_TYPE_MASK(1, input, MAY_BE_ARRAY|MAY_BE_OBJECT, NULL)
ZEND_ARG_TYPE_INFO(0, funcname, IS_CALLABLE, 0)
ZEND_ARG_TYPE_INFO(0, userdata, IS_MIXED, 0)
ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
ZEND_ARG_TYPE_INFO(0, argument, IS_MIXED, 0)
ZEND_END_ARG_INFO()

#define arginfo_array_walk_recursive arginfo_array_walk
Expand Down Expand Up @@ -171,13 +171,13 @@ ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_fill, 0, 3, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, start_key, IS_LONG, 0)
ZEND_ARG_TYPE_INFO(0, num, IS_LONG, 0)
ZEND_ARG_TYPE_INFO(0, val, IS_MIXED, 0)
ZEND_ARG_TYPE_INFO(0, count, IS_LONG, 0)
ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_fill_keys, 0, 2, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, keys, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, val, IS_MIXED, 0)
ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_range, 0, 2, IS_ARRAY, 0)
Expand All @@ -194,16 +194,13 @@ ZEND_END_ARG_INFO()

#define arginfo_array_shift arginfo_array_pop

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_unshift, 0, 1, IS_LONG, 0)
ZEND_ARG_TYPE_INFO(1, stack, IS_ARRAY, 0)
ZEND_ARG_VARIADIC_TYPE_INFO(0, vars, IS_MIXED, 0)
ZEND_END_ARG_INFO()
#define arginfo_array_unshift arginfo_array_push

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_splice, 0, 2, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(1, array, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, length, IS_LONG, 1, "null")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, replacement, IS_MIXED, 0, "[]")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, replacements, IS_MIXED, 0, "[]")
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_slice, 0, 2, IS_ARRAY, 0)
Expand All @@ -220,15 +217,15 @@ ZEND_END_ARG_INFO()
#define arginfo_array_merge_recursive arginfo_array_merge

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_replace, 0, 1, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, array1, IS_ARRAY, 0)
ZEND_ARG_VARIADIC_TYPE_INFO(0, arrays, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, array, IS_ARRAY, 0)
ZEND_ARG_VARIADIC_TYPE_INFO(0, replacements, IS_ARRAY, 0)
ZEND_END_ARG_INFO()

#define arginfo_array_replace_recursive arginfo_array_replace

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_keys, 0, 1, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, array, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, search_value, IS_MIXED, 0)
ZEND_ARG_TYPE_INFO(0, filter_value, IS_MIXED, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, strict, _IS_BOOL, 0, "false")
ZEND_END_ARG_INFO()

Expand Down Expand Up @@ -341,13 +338,13 @@ ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_map, 0, 2, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 1)
ZEND_ARG_TYPE_INFO(0, array1, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, array, IS_ARRAY, 0)
ZEND_ARG_VARIADIC_TYPE_INFO(0, arrays, IS_ARRAY, 0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_key_exists, 0, 2, _IS_BOOL, 0)
ZEND_ARG_INFO(0, key)
ZEND_ARG_TYPE_INFO(0, search, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, array, IS_ARRAY, 0)
ZEND_END_ARG_INFO()

#define arginfo_key_exists arginfo_array_key_exists
Expand Down
2 changes: 1 addition & 1 deletion ext/standard/tests/array/array_fill_error.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ try {
?>
--EXPECT--
*** Testing array_fill() : error conditions ***
array_fill(): Argument #2 ($num) must be greater than or equal to 0
array_fill(): Argument #2 ($count) must be greater than or equal to 0
2 changes: 1 addition & 1 deletion ext/standard/tests/array/array_map_variation10.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -83,5 +83,5 @@ array(3) {
NULL
}
-- passing NULL as 'array1' --
array_map(): Argument #2 ($array1) must be of type array, null given
array_map(): Argument #2 ($array) must be of type array, null given
Done
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,5 @@ bool(true)
-- With 'min' built-in function --
bool(true)
-- With 'echo' language construct --
array_walk_recursive(): Argument #2 ($funcname) must be a valid callback, function "echo" not found or invalid function name
array_walk_recursive(): Argument #2 ($callback) must be a valid callback, function "echo" not found or invalid function name
Done
2 changes: 1 addition & 1 deletion ext/standard/tests/array/array_walk_variation8.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,5 @@ bool(true)
-- With 'min' built-in function --
bool(true)
-- With 'echo' language construct --
array_walk(): Argument #2 ($funcname) must be a valid callback, function "echo" not found or invalid function name
array_walk(): Argument #2 ($callback) must be a valid callback, function "echo" not found or invalid function name
Done
4 changes: 2 additions & 2 deletions ext/standard/tests/array/bug74345.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ try {
?>
===DONE===
--EXPECT--
array_map(): Argument #2 ($array1) must be of type array, null given
array_map(): Argument #2 ($array1) must be of type array, null given
array_map(): Argument #2 ($array) must be of type array, null given
array_map(): Argument #2 ($array) must be of type array, null given
preg_replace_callback(): Argument #3 ($subject) must be of type array|string, stdClass given
===DONE===