From: Felipe Pena Date: Fri, 20 Jun 2008 13:02:33 +0000 (+0000) Subject: - New parameter parsing API X-Git-Tag: php-5.3.0alpha1~699 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d4ddc6d89032fce1b26f52a89c23938ceda74380;p=php - New parameter parsing API --- diff --git a/ext/standard/tests/general_functions/is_array.phpt b/ext/standard/tests/general_functions/is_array.phpt index bb240518c3..68b1b089da 100644 --- a/ext/standard/tests/general_functions/is_array.phpt +++ b/ext/standard/tests/general_functions/is_array.phpt @@ -207,9 +207,9 @@ bool(false) *** Testing error conditions *** -Warning: is_array(): Only one argument expected in %s on line %d +Warning: is_array() expects exactly 1 parameter, 0 given in %s on line %d bool(false) -Warning: is_array(): Only one argument expected in %s on line %d +Warning: is_array() expects exactly 1 parameter, 2 given in %s on line %d bool(false) Done diff --git a/ext/standard/tests/general_functions/is_bool.phpt b/ext/standard/tests/general_functions/is_bool.phpt index 9ef60d4b4e..dc1c21660a 100644 --- a/ext/standard/tests/general_functions/is_bool.phpt +++ b/ext/standard/tests/general_functions/is_bool.phpt @@ -287,9 +287,9 @@ bool(false) *** Testing error conditions *** -Warning: is_bool(): Only one argument expected in %s on line %d +Warning: is_bool() expects exactly 1 parameter, 0 given in %s on line %d bool(false) -Warning: is_bool(): Only one argument expected in %s on line %d +Warning: is_bool() expects exactly 1 parameter, 2 given in %s on line %d bool(false) Done diff --git a/ext/standard/tests/general_functions/is_float.phpt b/ext/standard/tests/general_functions/is_float.phpt index d72a22a5c6..1c610165d8 100644 --- a/ext/standard/tests/general_functions/is_float.phpt +++ b/ext/standard/tests/general_functions/is_float.phpt @@ -421,21 +421,21 @@ bool(false) *** Testing error conditions *** -Warning: is_float(): Only one argument expected in %s on line %d +Warning: is_float() expects exactly 1 parameter, 0 given in %s on line %d bool(false) -Warning: is_double(): Only one argument expected in %s on line %d +Warning: is_double() expects exactly 1 parameter, 0 given in %s on line %d bool(false) -Warning: is_real(): Only one argument expected in %s on line %d +Warning: is_real() expects exactly 1 parameter, 0 given in %s on line %d bool(false) -Warning: is_float(): Only one argument expected in %s on line %d +Warning: is_float() expects exactly 1 parameter, 2 given in %s on line %d bool(false) -Warning: is_double(): Only one argument expected in %s on line %d +Warning: is_double() expects exactly 1 parameter, 2 given in %s on line %d bool(false) -Warning: is_real(): Only one argument expected in %s on line %d +Warning: is_real() expects exactly 1 parameter, 2 given in %s on line %d bool(false) Done diff --git a/ext/standard/tests/general_functions/is_int.phpt b/ext/standard/tests/general_functions/is_int.phpt index 2158bcc08b..57a3c04da9 100644 --- a/ext/standard/tests/general_functions/is_int.phpt +++ b/ext/standard/tests/general_functions/is_int.phpt @@ -446,21 +446,21 @@ bool(false) *** Testing error conditions *** -Warning: is_int(): Only one argument expected in %s on line %d +Warning: is_int() expects exactly 1 parameter, 0 given in %s on line %d bool(false) -Warning: is_integer(): Only one argument expected in %s on line %d +Warning: is_integer() expects exactly 1 parameter, 0 given in %s on line %d bool(false) -Warning: is_long(): Only one argument expected in %s on line %d +Warning: is_long() expects exactly 1 parameter, 0 given in %s on line %d bool(false) -Warning: is_int(): Only one argument expected in %s on line %d +Warning: is_int() expects exactly 1 parameter, 2 given in %s on line %d bool(false) -Warning: is_integer(): Only one argument expected in %s on line %d +Warning: is_integer() expects exactly 1 parameter, 2 given in %s on line %d bool(false) -Warning: is_long(): Only one argument expected in %s on line %d +Warning: is_long() expects exactly 1 parameter, 2 given in %s on line %d bool(false) Done diff --git a/ext/standard/tests/general_functions/is_null.phpt b/ext/standard/tests/general_functions/is_null.phpt index 261385b855..f39ada28eb 100644 --- a/ext/standard/tests/general_functions/is_null.phpt +++ b/ext/standard/tests/general_functions/is_null.phpt @@ -289,9 +289,9 @@ bool(false) *** Testing error conditions *** -Warning: is_null(): Only one argument expected in %s on line %d +Warning: is_null() expects exactly 1 parameter, 0 given in %s on line %d bool(false) -Warning: is_null(): Only one argument expected in %s on line %d +Warning: is_null() expects exactly 1 parameter, 2 given in %s on line %d bool(false) Done diff --git a/ext/standard/tests/general_functions/is_numeric.phpt b/ext/standard/tests/general_functions/is_numeric.phpt index 8121402661..1b68201485 100644 --- a/ext/standard/tests/general_functions/is_numeric.phpt +++ b/ext/standard/tests/general_functions/is_numeric.phpt @@ -380,9 +380,9 @@ bool(false) *** Testing error conditions *** -Warning: Wrong parameter count for is_numeric() in %s on line %d +Warning: is_numeric() expects exactly 1 parameter, 0 given in %s on line %d NULL -Warning: Wrong parameter count for is_numeric() in %s on line %d +Warning: is_numeric() expects exactly 1 parameter, 2 given in %s on line %d NULL Done diff --git a/ext/standard/tests/general_functions/is_object.phpt b/ext/standard/tests/general_functions/is_object.phpt index 9916c9e32a..5b7719202c 100644 --- a/ext/standard/tests/general_functions/is_object.phpt +++ b/ext/standard/tests/general_functions/is_object.phpt @@ -220,9 +220,9 @@ bool(false) *** Testing error conditions *** -Warning: is_object(): Only one argument expected in %s on line %d +Warning: is_object() expects exactly 1 parameter, 0 given in %s on line %d bool(false) -Warning: is_object(): Only one argument expected in %s on line %d +Warning: is_object() expects exactly 1 parameter, 2 given in %s on line %d bool(false) Done diff --git a/ext/standard/tests/general_functions/is_scalar.phpt b/ext/standard/tests/general_functions/is_scalar.phpt index f7f142a16a..699057db9c 100644 --- a/ext/standard/tests/general_functions/is_scalar.phpt +++ b/ext/standard/tests/general_functions/is_scalar.phpt @@ -230,12 +230,12 @@ bool(false) *** Testing error conditions *** -Warning: Wrong parameter count for is_scalar() in %s on line %d +Warning: is_scalar() expects exactly 1 parameter, 0 given in %s on line %d NULL -Warning: Wrong parameter count for is_scalar() in %s on line %d +Warning: is_scalar() expects exactly 1 parameter, 2 given in %s on line %d NULL -Warning: Wrong parameter count for is_scalar() in %s on line %d +Warning: is_scalar() expects exactly 1 parameter, 2 given in %s on line %d NULL Done diff --git a/ext/standard/tests/general_functions/is_string.phpt b/ext/standard/tests/general_functions/is_string.phpt index 92bca6673a..f7a8185d0a 100644 --- a/ext/standard/tests/general_functions/is_string.phpt +++ b/ext/standard/tests/general_functions/is_string.phpt @@ -296,9 +296,9 @@ bool(false) *** Testing error conditions *** -Warning: is_string(): Only one argument expected in %s on line %d +Warning: is_string() expects exactly 1 parameter, 0 given in %s on line %d bool(false) -Warning: is_string(): Only one argument expected in %s on line %d +Warning: is_string() expects exactly 1 parameter, 2 given in %s on line %d bool(false) Done diff --git a/ext/standard/type.c b/ext/standard/type.c index 88b77844ac..4eb219e25f 100644 --- a/ext/standard/type.c +++ b/ext/standard/type.c @@ -27,8 +27,8 @@ PHP_FUNCTION(gettype) { zval **arg; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &arg) == FAILURE) { + return; } switch (Z_TYPE_PP(arg)) { @@ -90,37 +90,36 @@ PHP_FUNCTION(gettype) Set the type of the variable */ PHP_FUNCTION(settype) { - zval **var, **type; + zval **var; + char *type; char *new_type; + int type_len = 0; - if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &var, &type) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Zs", &var, &type, &type_len) == FAILURE) { + return; } - convert_to_string_ex(type); - new_type = Z_STRVAL_PP(type); - - if (!strcasecmp(new_type, "integer")) { + if (!strcasecmp(type, "integer")) { convert_to_long(*var); - } else if (!strcasecmp(new_type, "int")) { + } else if (!strcasecmp(type, "int")) { convert_to_long(*var); - } else if (!strcasecmp(new_type, "float")) { + } else if (!strcasecmp(type, "float")) { convert_to_double(*var); - } else if (!strcasecmp(new_type, "double")) { /* deprecated */ + } else if (!strcasecmp(type, "double")) { /* deprecated */ convert_to_double(*var); - } else if (!strcasecmp(new_type, "string")) { + } else if (!strcasecmp(type, "string")) { convert_to_string(*var); - } else if (!strcasecmp(new_type, "array")) { + } else if (!strcasecmp(type, "array")) { convert_to_array(*var); - } else if (!strcasecmp(new_type, "object")) { + } else if (!strcasecmp(type, "object")) { convert_to_object(*var); - } else if (!strcasecmp(new_type, "bool")) { + } else if (!strcasecmp(type, "bool")) { convert_to_boolean(*var); - } else if (!strcasecmp(new_type, "boolean")) { + } else if (!strcasecmp(type, "boolean")) { convert_to_boolean(*var); - } else if (!strcasecmp(new_type, "null")) { + } else if (!strcasecmp(type, "null")) { convert_to_null(*var); - } else if (!strcasecmp(new_type, "resource")) { + } else if (!strcasecmp(type, "resource")) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot convert to resource type"); RETURN_FALSE; } else { @@ -135,23 +134,23 @@ PHP_FUNCTION(settype) Get the integer value of a variable using the optional base for the conversion */ PHP_FUNCTION(intval) { - zval **num, **arg_base; + zval **num; + long arg_base; int base; switch (ZEND_NUM_ARGS()) { case 1: - if (zend_get_parameters_ex(1, &num) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &num) == FAILURE) { + return; } base = 10; break; case 2: - if (zend_get_parameters_ex(2, &num, &arg_base) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Zl", &num, &arg_base) == FAILURE) { + return; } - convert_to_long_ex(arg_base); - base = Z_LVAL_PP(arg_base); + base = arg_base; break; default: @@ -169,8 +168,8 @@ PHP_FUNCTION(floatval) { zval **num; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &num) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &num) == FAILURE) { + return; } RETVAL_ZVAL(*num, 1, 0); @@ -186,8 +185,8 @@ PHP_FUNCTION(strval) zval expr_copy; int use_copy; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &num) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &num) == FAILURE) { + return; } zend_make_printable_zval(*num, &expr_copy, &use_copy); @@ -204,8 +203,7 @@ static void php_is_type(INTERNAL_FUNCTION_PARAMETERS, int type) { zval **arg; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Only one argument expected"); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &arg) == FAILURE) { RETURN_FALSE; } @@ -305,8 +303,8 @@ PHP_FUNCTION(is_numeric) { zval **arg; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &arg) == FAILURE) { + return; } switch (Z_TYPE_PP(arg)) { @@ -336,8 +334,8 @@ PHP_FUNCTION(is_scalar) { zval **arg; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &arg) == FAILURE) { + return; } switch (Z_TYPE_PP(arg)) {