Skip to content

Commit

Permalink
Update array parameter names for named parameters
Browse files Browse the repository at this point in the history
* The array "subject" of a function gets called $array.

* Further parameters should be self-descriptive if used
  as a named parameter, and a full word, not an abbreviation.

* If there is a "bunch more arrays" variadic, it gets
  called $arrays (because that's what was already there).

* A few functions have a variadic "a bunch more arrays,
  and then a callable", and were already called $rest.
  I left those as is and died a little inside.

* Any callable provided to an array function that acts
  on the array is called $callback. (Nearly all were already,
  I just fixed the one or two outliers.)

* array_multisort() is beyond help so I ran screaming.
  • Loading branch information
Crell authored and sgolemon committed Sep 14, 2020
1 parent 57a4a2c commit 96f2f31
Show file tree
Hide file tree
Showing 12 changed files with 55 additions and 58 deletions.
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
45 changes: 21 additions & 24 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: d1bcbdfe71bdc57680abe391d1ef2859538615c2 */
* 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 Expand Up @@ -746,7 +743,7 @@ ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_setrawcookie, 0, 1, _IS_BOOL, 0)
ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, value, IS_STRING, 0, "\'\'")
ZEND_ARG_TYPE_MASK(0, expires_or_options, MAY_BE_ARRAY|MAY_BE_LONG, "0")
ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, expires_or_options, "0")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, path, IS_STRING, 0, "\'\'")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, domain, IS_STRING, 0, "\'\'")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, secure, _IS_BOOL, 0, "false")
Expand Down Expand Up @@ -935,9 +932,9 @@ ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_substr_replace, 0, 3, MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_FALSE)
ZEND_ARG_TYPE_MASK(0, str, MAY_BE_ARRAY|MAY_BE_STRING, NULL)
ZEND_ARG_TYPE_MASK(0, replace, MAY_BE_ARRAY|MAY_BE_STRING, NULL)
ZEND_ARG_TYPE_MASK(0, start, MAY_BE_ARRAY|MAY_BE_LONG, NULL)
ZEND_ARG_TYPE_MASK(0, length, MAY_BE_ARRAY|MAY_BE_LONG|MAY_BE_NULL, "null")
ZEND_ARG_TYPE_MASK(0, replace, MAY_BE_STRING|MAY_BE_ARRAY, NULL)
ZEND_ARG_INFO(0, start)
ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, length, "null")
ZEND_END_ARG_INFO()

#define arginfo_quotemeta arginfo_base64_encode
Expand Down Expand Up @@ -1773,7 +1770,7 @@ ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_password_needs_rehash, 0, 2, _IS_BOOL, 0)
ZEND_ARG_TYPE_INFO(0, hash, IS_STRING, 0)
ZEND_ARG_TYPE_MASK(0, algo, MAY_BE_STRING|MAY_BE_LONG|MAY_BE_NULL, NULL)
ZEND_ARG_TYPE_MASK(0, algo, MAY_BE_STRING|MAY_BE_LONG, NULL)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 0, "[]")
ZEND_END_ARG_INFO()

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===

0 comments on commit 96f2f31

Please sign in to comment.