]> granicus.if.org Git - php/commitdiff
- New parameter parsing API
authorFelipe Pena <felipe@php.net>
Wed, 23 Jul 2008 19:33:58 +0000 (19:33 +0000)
committerFelipe Pena <felipe@php.net>
Wed, 23 Jul 2008 19:33:58 +0000 (19:33 +0000)
ext/standard/assert.c
ext/standard/basic_functions.c
ext/standard/tests/assert/assert04.phpt
ext/standard/tests/assert/assert_error1.phpt

index 4638212acfb0a95e091231f685e7efec77472d82..d29d8edff976084c26ba2703ac7f7f8ad259d97d 100644 (file)
@@ -149,8 +149,8 @@ PHP_FUNCTION(assert)
                RETURN_TRUE;
        }
 
-       if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &assertion) == FAILURE) {
-               WRONG_PARAM_COUNT;
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &assertion) == FAILURE) {
+               return;
        }
 
        if (Z_TYPE_PP(assertion) == IS_STRING || Z_TYPE_PP(assertion) == IS_UNICODE) {
@@ -262,17 +262,16 @@ PHP_FUNCTION(assert)
    Set/get the various assert flags */
 PHP_FUNCTION(assert_options)
 {
-       zval **what, **value;
+       zval **value;
+       long what;
        int oldint;
        int ac = ZEND_NUM_ARGS();
 
-       if (ac < 1 || ac > 2 || zend_get_parameters_ex(ac, &what, &value) == FAILURE) {
-               WRONG_PARAM_COUNT;
+       if (zend_parse_parameters(ac TSRMLS_CC, "l|Z", &what, &value) == FAILURE) {
+               return;
        }
 
-       convert_to_long_ex(what);
-
-       switch (Z_LVAL_PP(what)) {
+       switch (what) {
        case ASSERT_ACTIVE:
                oldint = ASSERTG(active);
                if (ac == 2) {
@@ -328,7 +327,7 @@ PHP_FUNCTION(assert_options)
                break;
 
        default:
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown value %ld", Z_LVAL_PP(what));
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown value %ld", what);
                break;
        }
 
index 4bdf21404ce160ce4f7d5a693089c6b3fe5e8841..cb190d333bb1517dbca518ac6065f0ab1c3ce727 100644 (file)
@@ -4928,65 +4928,17 @@ error options:
    Send an error message somewhere */
 PHP_FUNCTION(error_log)
 {
-       zval **string, **erropt = NULL, **option = NULL, **emailhead = NULL;
-       int opt_err = 0;
        char *message, *opt = NULL, *headers = NULL;
+       int message_len, opt_len, headers_len;
+       int opt_err = 0, argc = ZEND_NUM_ARGS();
+       long erropt;
 
-       switch (ZEND_NUM_ARGS()) {
-               case 1:
-                       if (zend_get_parameters_ex(1, &string) == FAILURE) {
-                               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument 1 invalid");
-                               RETURN_FALSE;
-                       }
-                       break;
-
-               case 2:
-                       if (zend_get_parameters_ex(2, &string, &erropt) == FAILURE) {
-                               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid arguments");
-                               RETURN_FALSE;
-                       }
-                       convert_to_long_ex(erropt);
-                       opt_err = Z_LVAL_PP(erropt);
-                       break;
-
-               case 3:
-                       if (zend_get_parameters_ex(3, &string, &erropt, &option) == FAILURE) {
-                               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid arguments");
-                               RETURN_FALSE;
-                       }
-                       convert_to_long_ex(erropt);
-                       opt_err = Z_LVAL_PP(erropt);
-                       convert_to_string_ex(option);
-                       opt = Z_STRVAL_PP(option);
-                       break;
-
-               case 4:
-                       if (zend_get_parameters_ex (4, &string, &erropt, &option, &emailhead) == FAILURE) {
-                               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid arguments");
-                               RETURN_FALSE;
-                       }
-                       break;
-
-               default:
-                       WRONG_PARAM_COUNT;
-       }
-
-       convert_to_string_ex(string);
-       message = Z_STRVAL_PP(string);
-
-       if (erropt != NULL) {
-               convert_to_long_ex(erropt);
-               opt_err = Z_LVAL_PP(erropt);
-       }
-
-       if (option != NULL) {
-               convert_to_string_ex(option);
-               opt = Z_STRVAL_PP(option);
+       if (zend_parse_parameters(argc TSRMLS_CC, "s|lss", &message, &message_len, &erropt, &opt, &opt_len, &headers, &headers_len) == FAILURE) {
+               return;
        }
 
-       if (emailhead != NULL) {
-               convert_to_string_ex(emailhead);
-               headers = Z_STRVAL_PP(emailhead);
+       if (argc > 1) {
+               opt_err = erropt;
        }
 
        if (_php_error_log(opt_err, message, opt, headers TSRMLS_CC) == FAILURE) {
index 43028ad3aa11caf1feaa11220c0cc127cdf245f3..52683257525ffbee10a63b6d4ce6e6f35e7cc09e 100644 (file)
@@ -30,11 +30,11 @@ echo "not reached\n";
  
 ?>
 --EXPECTF--
-Warning: Wrong parameter count for assert() in %s on line %d
+Warning: assert() expects exactly 1 parameter, 2 given in %s on line %d
 
-Warning: Wrong parameter count for assert_options() in %s on line %d
+Warning: assert_options() expects at most 2 parameters, 3 given in %s on line %d
 
-Warning: assert_options(): Unknown value 0 in %s on line %d
+Warning: assert_options() expects parameter 1 to be long, Unicode string given in %s on line %d
 
 Warning: assert(): Assertion failed in %s on line %d
 
index 992b81e7c4126cc6aec7b71c791a4a8c8fd60efc..8f7d1678c358508077087e7def7dd12bf01935a9 100644 (file)
@@ -34,11 +34,11 @@ var_dump($r2=assert($sa,1));
 //Catch recoverable error with handler
 var_dump($rc=assert('aa=sd+as+safsafasfaçsafçsafç'));
 --EXPECTF--
-Warning: Wrong parameter count for assert_options() in %s on line 14
+Warning: assert_options() expects at most 2 parameters, 3 given in %s on line %d
 NULL
 
-Warning: assert_options(): Unknown value 0 in %s on line 18
-bool(false)
+Warning: assert_options() expects parameter 1 to be long, Unicode string given in %s on line %d
+NULL
 
-Warning: Wrong parameter count for assert() in %s on line 22
+Warning: assert() expects exactly 1 parameter, 2 given in %s on line %d
 NULL