From: Sara Golemon Date: Sat, 31 Dec 2016 16:45:54 +0000 (-0800) Subject: Use new param API in PDO X-Git-Tag: php-7.2.0alpha1~706 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bf422c56ab88a81695d8913b1d2f58d62f40986a;p=php Use new param API in PDO --- diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c index 4411c681bd..f28a341b19 100644 --- a/ext/pdo/pdo_dbh.c +++ b/ext/pdo/pdo_dbh.c @@ -210,11 +210,13 @@ static PHP_METHOD(PDO, dbh_constructor) int call_factory = 1; zend_error_handling zeh; - if (FAILURE == zend_parse_parameters_throw(ZEND_NUM_ARGS(), - "s|s!s!a!", &data_source, &data_source_len, - &username, &usernamelen, &password, &passwordlen, &options)) { - return; - } + ZEND_PARSE_PARAMETERS_START_EX(ZEND_PARSE_PARAMS_THROW, 1, 4) + Z_PARAM_STRING(data_source, data_source_len) + Z_PARAM_OPTIONAL + Z_PARAM_STRING_EX(username, usernamelen, 1, 0) + Z_PARAM_STRING_EX(password, passwordlen, 1, 0) + Z_PARAM_ARRAY_EX(options, 1, 0) + ZEND_PARSE_PARAMETERS_END(); /* parse the data source name */ colon = strchr(data_source, ':'); @@ -474,10 +476,11 @@ static PHP_METHOD(PDO, prepare) pdo_dbh_object_t *dbh_obj = Z_PDO_OBJECT_P(getThis()); pdo_dbh_t *dbh = dbh_obj->inner; - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "s|a", &statement, - &statement_len, &options)) { - RETURN_FALSE; - } + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STRING(statement, statement_len) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(options) + ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE); PDO_DBH_CLEAR_ERR(); PDO_CONSTRUCT_CHECK; @@ -827,9 +830,10 @@ static PHP_METHOD(PDO, setAttribute) zend_long attr; zval *value; - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "lz", &attr, &value)) { - RETURN_FALSE; - } + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_LONG(attr) + Z_PARAM_ZVAL_DEREF(value) + ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE); PDO_DBH_CLEAR_ERR(); PDO_CONSTRUCT_CHECK; @@ -848,9 +852,9 @@ static PHP_METHOD(PDO, getAttribute) pdo_dbh_t *dbh = Z_PDO_DBH_P(getThis()); zend_long attr; - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "l", &attr)) { - RETURN_FALSE; - } + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_LONG(attr) + ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE); PDO_DBH_CLEAR_ERR(); PDO_CONSTRUCT_CHECK; @@ -915,9 +919,9 @@ static PHP_METHOD(PDO, exec) size_t statement_len; zend_long ret; - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "s", &statement, &statement_len)) { - RETURN_FALSE; - } + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STRING(statement, statement_len) + ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE); if (!statement_len) { pdo_raise_impl_error(dbh, NULL, "HY000", "trying to execute an empty query"); @@ -943,9 +947,10 @@ static PHP_METHOD(PDO, lastInsertId) char *name = NULL; size_t namelen; - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "|s!", &name, &namelen)) { - RETURN_FALSE; - } + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STRING_EX(name, namelen, 1, 0) + ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE); PDO_DBH_CLEAR_ERR(); PDO_CONSTRUCT_CHECK; @@ -1136,9 +1141,11 @@ static PHP_METHOD(PDO, quote) char *qstr; size_t qlen; - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "s|l", &str, &str_len, ¶mtype)) { - RETURN_FALSE; - } + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STRING(str, str_len) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(paramtype) + ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE); PDO_DBH_CLEAR_ERR(); PDO_CONSTRUCT_CHECK; diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c index e68ab95921..91451ed043 100644 --- a/ext/pdo/pdo_stmt.c +++ b/ext/pdo/pdo_stmt.c @@ -432,9 +432,10 @@ static PHP_METHOD(PDOStatement, execute) int ret = 1; PHP_STMT_GET_OBJ; - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "|a!", &input_params)) { - RETURN_FALSE; - } + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY_EX(input_params, 1, 0) + ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE); PDO_STMT_CLEAR_ERR(); @@ -1261,10 +1262,12 @@ static PHP_METHOD(PDOStatement, fetch) zend_long off = 0; PHP_STMT_GET_OBJ; - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "|lll", &how, - &ori, &off)) { - RETURN_FALSE; - } + ZEND_PARSE_PARAMETERS_START(0, 3) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(how) + Z_PARAM_LONG(ori) + Z_PARAM_LONG(off) + ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE); PDO_STMT_CLEAR_ERR(); @@ -1293,9 +1296,11 @@ static PHP_METHOD(PDOStatement, fetchObject) PHP_STMT_GET_OBJ; - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "|S!a", &class_name, &ctor_args)) { - RETURN_FALSE; - } + ZEND_PARSE_PARAMETERS_START(0, 2) + Z_PARAM_OPTIONAL + Z_PARAM_STR_EX(class_name, 1, 0) + Z_PARAM_ARRAY(ctor_args) + ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE); PDO_STMT_CLEAR_ERR(); @@ -1351,9 +1356,10 @@ static PHP_METHOD(PDOStatement, fetchColumn) zend_long col_n = 0; PHP_STMT_GET_OBJ; - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "|l", &col_n)) { - RETURN_FALSE; - } + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(col_n) + ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE); PDO_STMT_CLEAR_ERR(); @@ -1378,9 +1384,12 @@ static PHP_METHOD(PDOStatement, fetchAll) int error = 0, flags, old_arg_count; PHP_STMT_GET_OBJ; - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "|lzz", &how, &arg2, &ctor_args)) { - RETURN_FALSE; - } + ZEND_PARSE_PARAMETERS_START(0, 3) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(how) + Z_PARAM_ZVAL_DEREF(arg2) + Z_PARAM_ZVAL_DEREF(ctor_args) + ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE); if (!pdo_stmt_verify_mode(stmt, how, 1)) { RETURN_FALSE; @@ -1698,9 +1707,10 @@ static PHP_METHOD(PDOStatement, setAttribute) zval *value = NULL; PHP_STMT_GET_OBJ; - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "lz!", &attr, &value)) { - RETURN_FALSE; - } + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_LONG(attr) + Z_PARAM_ZVAL_DEREF_EX(value, 1, 0) + ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE); if (!stmt->methods->set_attribute) { goto fail; @@ -1739,9 +1749,9 @@ static PHP_METHOD(PDOStatement, getAttribute) zend_long attr; PHP_STMT_GET_OBJ; - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "l", &attr)) { - RETURN_FALSE; - } + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_LONG(attr) + ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE); if (!stmt->methods->get_attribute) { if (!generic_stmt_attr_get(stmt, return_value, attr)) { @@ -1793,9 +1803,10 @@ static PHP_METHOD(PDOStatement, getColumnMeta) struct pdo_column_data *col; PHP_STMT_GET_OBJ; - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "l", &colno)) { - RETURN_FALSE; - } + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_LONG(colno) + ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE); + if(colno < 0) { pdo_raise_impl_error(stmt->dbh, stmt, "42P10", "column number must be non-negative"); RETURN_FALSE;