diff options
Diffstat (limited to 'ext/standard/basic_functions.c')
-rw-r--r-- | ext/standard/basic_functions.c | 186 |
1 files changed, 30 insertions, 156 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 0393917e23..537ca17731 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -297,15 +297,11 @@ ZEND_BEGIN_ARG_INFO(arginfo_key, 0) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_min, 0, 0, 1) - ZEND_ARG_INFO(0, arg1) - ZEND_ARG_INFO(0, arg2) - ZEND_ARG_INFO(0, ...) + ZEND_ARG_VARIADIC_INFO(0, args) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_max, 0, 0, 1) - ZEND_ARG_INFO(0, arg1) - ZEND_ARG_INFO(0, arg2) - ZEND_ARG_INFO(0, ...) + ZEND_ARG_VARIADIC_INFO(0, args) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_array_walk, 0, 0, 2) @@ -339,8 +335,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_extract, 0, 0, 1) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_compact, 0, 0, 1) - ZEND_ARG_INFO(0, var_names) - ZEND_ARG_INFO(0, ...) + ZEND_ARG_VARIADIC_INFO(0, var_names) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_array_fill, 0) @@ -366,8 +361,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_array_push, 0, 0, 2) ZEND_ARG_INFO(1, stack) /* ARRAY_INFO(1, stack, 0) */ - ZEND_ARG_INFO(0, var) - ZEND_ARG_INFO(0, ...) + ZEND_ARG_VARIADIC_INFO(0, vars) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_array_pop, 0) @@ -380,8 +374,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_array_unshift, 0, 0, 2) ZEND_ARG_INFO(1, stack) /* ARRAY_INFO(1, stack, 0) */ - ZEND_ARG_INFO(0, var) - ZEND_ARG_INFO(0, ...) + ZEND_ARG_VARIADIC_INFO(0, vars) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_array_splice, 0, 0, 2) @@ -400,26 +393,22 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_array_merge, 0, 0, 2) ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg, 0) */ - ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg, 0) */ - ZEND_ARG_INFO(0, ...) /* ARRAY_INFO(0, ..., 0) */ + ZEND_ARG_VARIADIC_INFO(0, arrays) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_array_merge_recursive, 0, 0, 2) ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg, 0) */ - ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg, 0) */ - ZEND_ARG_INFO(0, ...) /* ARRAY_INFO(0, arg, 0) */ + ZEND_ARG_VARIADIC_INFO(0, arrays) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_array_replace, 0, 0, 2) ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg, 0) */ - ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg, 0) */ - ZEND_ARG_INFO(0, ...) /* ARRAY_INFO(0, ..., 0) */ + ZEND_ARG_VARIADIC_INFO(0, arrays) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_array_replace_recursive, 0, 0, 2) ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg, 0) */ - ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg, 0) */ - ZEND_ARG_INFO(0, ...) /* ARRAY_INFO(0, arg, 0) */ + ZEND_ARG_VARIADIC_INFO(0, arrays) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_array_keys, 0, 0, 1) @@ -468,8 +457,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_array_intersect_key, 0, 0, 2) ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ - ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg2, 0) */ - ZEND_ARG_INFO(0, ...) /* ARRAY_INFO(0, ..., 0) */ + ZEND_ARG_VARIADIC_INFO(0, arrays) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_array_intersect_ukey, 0) @@ -480,8 +468,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_array_intersect, 0, 0, 2) ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ - ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg2, 0) */ - ZEND_ARG_INFO(0, ...) /* ARRAY_INFO(0, ..., 0) */ + ZEND_ARG_VARIADIC_INFO(0, arrays) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_array_uintersect, 0) @@ -492,8 +479,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_array_intersect_assoc, 0, 0, 2) ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ - ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg2, 0) */ - ZEND_ARG_INFO(0, ...) /* ARRAY_INFO(0, ..., 0) */ + ZEND_ARG_VARIADIC_INFO(0, arrays) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_array_uintersect_assoc, 0) @@ -517,8 +503,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_array_diff_key, 0, 0, 2) ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ - ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg2, 0) */ - ZEND_ARG_INFO(0, ...) /* ARRAY_INFO(0, ..., 0) */ + ZEND_ARG_VARIADIC_INFO(0, arrays) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_array_diff_ukey, 0) @@ -529,8 +514,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_array_diff, 0, 0, 2) ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ - ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg2, 0) */ - ZEND_ARG_INFO(0, ...) /* ARRAY_INFO(0, ..., 0) */ + ZEND_ARG_VARIADIC_INFO(0, arrays) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_array_udiff, 0) @@ -541,8 +525,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_array_diff_assoc, 0, 0, 2) ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ - ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg2, 0) */ - ZEND_ARG_INFO(0, ...) /* ARRAY_INFO(0, ..., 0) */ + ZEND_ARG_VARIADIC_INFO(0, arrays) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_array_diff_uassoc, 0) @@ -601,8 +584,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_array_map, 0, 0, 2) ZEND_ARG_INFO(0, callback) - ZEND_ARG_INFO(0, arg) /* ARRAY_INFO(0, arg, 0) */ - ZEND_ARG_INFO(0, ...) + ZEND_ARG_VARIADIC_INFO(0, arrays) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_array_key_exists, 0) @@ -712,8 +694,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_call_user_func, 0, 0, 1) ZEND_ARG_INFO(0, function_name) - ZEND_ARG_INFO(0, parmeter) - ZEND_ARG_INFO(0, ...) + ZEND_ARG_VARIADIC_INFO(0, parameters) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_call_user_func_array, 0, 0, 2) @@ -721,23 +702,9 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_call_user_func_array, 0, 0, 2) ZEND_ARG_INFO(0, parameters) /* ARRAY_INFO(0, parameters, 1) */ ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_call_user_method, 0, 0, 2) - ZEND_ARG_INFO(0, method_name) - ZEND_ARG_INFO(1, object) - ZEND_ARG_INFO(0, parameter) - ZEND_ARG_INFO(0, ...) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_call_user_method_array, 0) - ZEND_ARG_INFO(0, method_name) - ZEND_ARG_INFO(1, object) - ZEND_ARG_INFO(0, params) /* ARRAY_INFO(0, params, 1) */ -ZEND_END_ARG_INFO() - ZEND_BEGIN_ARG_INFO_EX(arginfo_forward_static_call, 0, 0, 1) ZEND_ARG_INFO(0, function_name) - ZEND_ARG_INFO(0, parameter) - ZEND_ARG_INFO(0, ...) + ZEND_ARG_VARIADIC_INFO(0, parameters) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_forward_static_call_array, 0, 0, 2) @@ -745,8 +712,9 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_forward_static_call_array, 0, 0, 2) ZEND_ARG_INFO(0, parameters) /* ARRAY_INFO(0, parameters, 1) */ ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO(arginfo_register_shutdown_function, 0) +ZEND_BEGIN_ARG_INFO_EX(arginfo_register_shutdown_function, 0, 0, 1) ZEND_ARG_INFO(0, function_name) + ZEND_ARG_VARIADIC_INFO(0, parameters) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_highlight_file, 0, 0, 1) @@ -833,8 +801,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_register_tick_function, 0, 0, 1) ZEND_ARG_INFO(0, function_name) - ZEND_ARG_INFO(0, arg) - ZEND_ARG_INFO(0, ...) + ZEND_ARG_VARIADIC_INFO(0, parameters) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_unregister_tick_function, 0) @@ -978,11 +945,6 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_scandir, 0, 0, 1) ZEND_ARG_INFO(0, context) ZEND_END_ARG_INFO() /* }}} */ -/* {{{ arginfo ext/standard/dl.c */ -ZEND_BEGIN_ARG_INFO(arginfo_dl, 0) - ZEND_ARG_INFO(0, extension_filename) -ZEND_END_ARG_INFO() -/* }}} */ /* {{{ dns.c */ ZEND_BEGIN_ARG_INFO(arginfo_gethostbyaddr, 0) ZEND_ARG_INFO(0, ip_address) @@ -1391,8 +1353,7 @@ ZEND_END_ARG_INFO() /* {{{ formatted_print.c */ ZEND_BEGIN_ARG_INFO_EX(arginfo_sprintf, 0, 0, 2) ZEND_ARG_INFO(0, format) - ZEND_ARG_INFO(0, arg1) - ZEND_ARG_INFO(0, ...) + ZEND_ARG_VARIADIC_INFO(0, args) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_vsprintf, 0) @@ -1402,8 +1363,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_printf, 0, 0, 1) ZEND_ARG_INFO(0, format) - ZEND_ARG_INFO(0, arg1) - ZEND_ARG_INFO(0, ...) + ZEND_ARG_VARIADIC_INFO(0, args) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_vprintf, 0) @@ -1414,8 +1374,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_fprintf, 0, 0, 2) ZEND_ARG_INFO(0, stream) ZEND_ARG_INFO(0, format) - ZEND_ARG_INFO(0, arg1) - ZEND_ARG_INFO(0, ...) + ZEND_ARG_VARIADIC_INFO(0, args) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_vfprintf, 0) @@ -1837,8 +1796,7 @@ ZEND_END_ARG_INFO() /* {{{ pack.c */ ZEND_BEGIN_ARG_INFO_EX(arginfo_pack, 0, 0, 2) ZEND_ARG_INFO(0, format) - ZEND_ARG_INFO(0, arg1) - ZEND_ARG_INFO(0, ...) + ZEND_ARG_VARIADIC_INFO(0, args) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_unpack, 0) @@ -2399,8 +2357,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_setlocale, 0, 0, 2) ZEND_ARG_INFO(0, category) - ZEND_ARG_INFO(0, locale) - ZEND_ARG_INFO(0, ...) + ZEND_ARG_VARIADIC_INFO(0, locales) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_parse_str, 0, 0, 1) @@ -2661,13 +2618,11 @@ ZEND_END_ARG_INFO() /* }}} */ /* {{{ var.c */ ZEND_BEGIN_ARG_INFO_EX(arginfo_var_dump, 0, 0, 1) - ZEND_ARG_INFO(0, var) - ZEND_ARG_INFO(0, ...) + ZEND_ARG_VARIADIC_INFO(0, vars) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_debug_zval_dump, 0, 0, 1) - ZEND_ARG_INFO(0, var) - ZEND_ARG_INFO(0, ...) + ZEND_ARG_VARIADIC_INFO(0, vars) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_var_export, 0, 0, 1) @@ -2679,7 +2634,7 @@ ZEND_BEGIN_ARG_INFO(arginfo_serialize, 0) ZEND_ARG_INFO(0, var) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO(arginfo_unserialize, 0) +ZEND_BEGIN_ARG_INFO_EX(arginfo_unserialize, 0, 0, 1) ZEND_ARG_INFO(0, variable_representation) ZEND_ARG_INFO(1, consumed) ZEND_END_ARG_INFO() @@ -2988,8 +2943,6 @@ const zend_function_entry basic_functions[] = { /* {{{ */ PHP_FE(error_get_last, arginfo_error_get_last) PHP_FE(call_user_func, arginfo_call_user_func) PHP_FE(call_user_func_array, arginfo_call_user_func_array) - PHP_DEP_FE(call_user_method, arginfo_call_user_method) - PHP_DEP_FE(call_user_method_array, arginfo_call_user_method_array) PHP_FE(forward_static_call, arginfo_forward_static_call) PHP_FE(forward_static_call_array, arginfo_forward_static_call_array) PHP_FE(serialize, arginfo_serialize) @@ -3865,7 +3818,7 @@ PHP_FUNCTION(constant) if (c) { ZVAL_COPY_VALUE(return_value, c); if (Z_CONSTANT_P(return_value)) { - zval_update_constant_ex(return_value, (void*)1, NULL TSRMLS_CC); + zval_update_constant_ex(return_value, 1, NULL TSRMLS_CC); } zval_copy_ctor(return_value); } else { @@ -4810,85 +4763,6 @@ PHP_FUNCTION(call_user_func_array) } /* }}} */ -/* {{{ proto mixed call_user_method(string method_name, mixed object [, mixed parameter] [, mixed ...]) - Call a user method on a specific object or class */ -PHP_FUNCTION(call_user_method) -{ - zval *params = NULL; - int n_params = 0; - zval retval; - zval *callback, *object; - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z/z*", &callback, &object, ¶ms, &n_params) == FAILURE) { - return; - } - - object = Z_REFVAL_P(object); - - if (Z_TYPE_P(object) != IS_OBJECT && - Z_TYPE_P(object) != IS_STRING - ) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Second argument is not an object or class name"); - RETURN_FALSE; - } - - convert_to_string(callback); - - if (call_user_function_ex(EG(function_table), object, callback, &retval, n_params, params, 0, NULL TSRMLS_CC) == SUCCESS) { - if (Z_TYPE(retval) != IS_UNDEF) { - ZVAL_COPY_VALUE(return_value, &retval); - } - } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call %s()", Z_STRVAL_P(callback)); - } -} -/* }}} */ - -/* {{{ proto mixed call_user_method_array(string method_name, mixed object, array params) - Call a user method on a specific object or class using a parameter array */ -PHP_FUNCTION(call_user_method_array) -{ - zval *params, *method_args = NULL, retval, *zv; - zval *callback, *object; - HashTable *params_ar; - int num_elems, element = 0; - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z/zA/", &callback, &object, ¶ms) == FAILURE) { - return; - } - - object = Z_REFVAL_P(object); - - if (Z_TYPE_P(object) != IS_OBJECT && - Z_TYPE_P(object) != IS_STRING - ) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Second argument is not an object or class name"); - RETURN_FALSE; - } - - convert_to_string(callback); - - params_ar = HASH_OF(params); - num_elems = zend_hash_num_elements(params_ar); - method_args = (zval *) safe_emalloc(sizeof(zval), num_elems, 0); - - ZEND_HASH_FOREACH_VAL(params_ar, zv) { - ZVAL_COPY_VALUE(&method_args[element], zv); - element++; - } ZEND_HASH_FOREACH_END(); - - if (call_user_function_ex(EG(function_table), object, callback, &retval, num_elems, method_args, 0, NULL TSRMLS_CC) == SUCCESS) { - if (Z_TYPE(retval) != IS_UNDEF) { - ZVAL_COPY_VALUE(return_value, &retval); - } - } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call %s()", Z_STRVAL_P(callback)); - } - - efree(method_args); -} -/* }}} */ - /* {{{ proto mixed forward_static_call(mixed function_name [, mixed parmeter] [, mixed ...]) U Call a user function which is the first parameter */ PHP_FUNCTION(forward_static_call) |