Skip to content

Commit bf422c5

Browse files
committed
Use new param API in PDO
1 parent a470a8c commit bf422c5

File tree

2 files changed

+67
-49
lines changed

2 files changed

+67
-49
lines changed

ext/pdo/pdo_dbh.c

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -210,11 +210,13 @@ static PHP_METHOD(PDO, dbh_constructor)
210210
int call_factory = 1;
211211
zend_error_handling zeh;
212212

213-
if (FAILURE == zend_parse_parameters_throw(ZEND_NUM_ARGS(),
214-
"s|s!s!a!", &data_source, &data_source_len,
215-
&username, &usernamelen, &password, &passwordlen, &options)) {
216-
return;
217-
}
213+
ZEND_PARSE_PARAMETERS_START_EX(ZEND_PARSE_PARAMS_THROW, 1, 4)
214+
Z_PARAM_STRING(data_source, data_source_len)
215+
Z_PARAM_OPTIONAL
216+
Z_PARAM_STRING_EX(username, usernamelen, 1, 0)
217+
Z_PARAM_STRING_EX(password, passwordlen, 1, 0)
218+
Z_PARAM_ARRAY_EX(options, 1, 0)
219+
ZEND_PARSE_PARAMETERS_END();
218220

219221
/* parse the data source name */
220222
colon = strchr(data_source, ':');
@@ -474,10 +476,11 @@ static PHP_METHOD(PDO, prepare)
474476
pdo_dbh_object_t *dbh_obj = Z_PDO_OBJECT_P(getThis());
475477
pdo_dbh_t *dbh = dbh_obj->inner;
476478

477-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "s|a", &statement,
478-
&statement_len, &options)) {
479-
RETURN_FALSE;
480-
}
479+
ZEND_PARSE_PARAMETERS_START(1, 2)
480+
Z_PARAM_STRING(statement, statement_len)
481+
Z_PARAM_OPTIONAL
482+
Z_PARAM_ARRAY(options)
483+
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
481484

482485
PDO_DBH_CLEAR_ERR();
483486
PDO_CONSTRUCT_CHECK;
@@ -827,9 +830,10 @@ static PHP_METHOD(PDO, setAttribute)
827830
zend_long attr;
828831
zval *value;
829832

830-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "lz", &attr, &value)) {
831-
RETURN_FALSE;
832-
}
833+
ZEND_PARSE_PARAMETERS_START(2, 2)
834+
Z_PARAM_LONG(attr)
835+
Z_PARAM_ZVAL_DEREF(value)
836+
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
833837

834838
PDO_DBH_CLEAR_ERR();
835839
PDO_CONSTRUCT_CHECK;
@@ -848,9 +852,9 @@ static PHP_METHOD(PDO, getAttribute)
848852
pdo_dbh_t *dbh = Z_PDO_DBH_P(getThis());
849853
zend_long attr;
850854

851-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "l", &attr)) {
852-
RETURN_FALSE;
853-
}
855+
ZEND_PARSE_PARAMETERS_START(1, 1)
856+
Z_PARAM_LONG(attr)
857+
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
854858

855859
PDO_DBH_CLEAR_ERR();
856860
PDO_CONSTRUCT_CHECK;
@@ -915,9 +919,9 @@ static PHP_METHOD(PDO, exec)
915919
size_t statement_len;
916920
zend_long ret;
917921

918-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "s", &statement, &statement_len)) {
919-
RETURN_FALSE;
920-
}
922+
ZEND_PARSE_PARAMETERS_START(1, 1)
923+
Z_PARAM_STRING(statement, statement_len)
924+
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
921925

922926
if (!statement_len) {
923927
pdo_raise_impl_error(dbh, NULL, "HY000", "trying to execute an empty query");
@@ -943,9 +947,10 @@ static PHP_METHOD(PDO, lastInsertId)
943947
char *name = NULL;
944948
size_t namelen;
945949

946-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "|s!", &name, &namelen)) {
947-
RETURN_FALSE;
948-
}
950+
ZEND_PARSE_PARAMETERS_START(0, 1)
951+
Z_PARAM_OPTIONAL
952+
Z_PARAM_STRING_EX(name, namelen, 1, 0)
953+
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
949954

950955
PDO_DBH_CLEAR_ERR();
951956
PDO_CONSTRUCT_CHECK;
@@ -1136,9 +1141,11 @@ static PHP_METHOD(PDO, quote)
11361141
char *qstr;
11371142
size_t qlen;
11381143

1139-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "s|l", &str, &str_len, &paramtype)) {
1140-
RETURN_FALSE;
1141-
}
1144+
ZEND_PARSE_PARAMETERS_START(1, 2)
1145+
Z_PARAM_STRING(str, str_len)
1146+
Z_PARAM_OPTIONAL
1147+
Z_PARAM_LONG(paramtype)
1148+
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
11421149

11431150
PDO_DBH_CLEAR_ERR();
11441151
PDO_CONSTRUCT_CHECK;

ext/pdo/pdo_stmt.c

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -432,9 +432,10 @@ static PHP_METHOD(PDOStatement, execute)
432432
int ret = 1;
433433
PHP_STMT_GET_OBJ;
434434

435-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "|a!", &input_params)) {
436-
RETURN_FALSE;
437-
}
435+
ZEND_PARSE_PARAMETERS_START(0, 1)
436+
Z_PARAM_OPTIONAL
437+
Z_PARAM_ARRAY_EX(input_params, 1, 0)
438+
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
438439

439440
PDO_STMT_CLEAR_ERR();
440441

@@ -1261,10 +1262,12 @@ static PHP_METHOD(PDOStatement, fetch)
12611262
zend_long off = 0;
12621263
PHP_STMT_GET_OBJ;
12631264

1264-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "|lll", &how,
1265-
&ori, &off)) {
1266-
RETURN_FALSE;
1267-
}
1265+
ZEND_PARSE_PARAMETERS_START(0, 3)
1266+
Z_PARAM_OPTIONAL
1267+
Z_PARAM_LONG(how)
1268+
Z_PARAM_LONG(ori)
1269+
Z_PARAM_LONG(off)
1270+
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
12681271

12691272
PDO_STMT_CLEAR_ERR();
12701273

@@ -1293,9 +1296,11 @@ static PHP_METHOD(PDOStatement, fetchObject)
12931296

12941297
PHP_STMT_GET_OBJ;
12951298

1296-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "|S!a", &class_name, &ctor_args)) {
1297-
RETURN_FALSE;
1298-
}
1299+
ZEND_PARSE_PARAMETERS_START(0, 2)
1300+
Z_PARAM_OPTIONAL
1301+
Z_PARAM_STR_EX(class_name, 1, 0)
1302+
Z_PARAM_ARRAY(ctor_args)
1303+
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
12991304

13001305
PDO_STMT_CLEAR_ERR();
13011306

@@ -1351,9 +1356,10 @@ static PHP_METHOD(PDOStatement, fetchColumn)
13511356
zend_long col_n = 0;
13521357
PHP_STMT_GET_OBJ;
13531358

1354-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "|l", &col_n)) {
1355-
RETURN_FALSE;
1356-
}
1359+
ZEND_PARSE_PARAMETERS_START(0, 1)
1360+
Z_PARAM_OPTIONAL
1361+
Z_PARAM_LONG(col_n)
1362+
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
13571363

13581364
PDO_STMT_CLEAR_ERR();
13591365

@@ -1378,9 +1384,12 @@ static PHP_METHOD(PDOStatement, fetchAll)
13781384
int error = 0, flags, old_arg_count;
13791385
PHP_STMT_GET_OBJ;
13801386

1381-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "|lzz", &how, &arg2, &ctor_args)) {
1382-
RETURN_FALSE;
1383-
}
1387+
ZEND_PARSE_PARAMETERS_START(0, 3)
1388+
Z_PARAM_OPTIONAL
1389+
Z_PARAM_LONG(how)
1390+
Z_PARAM_ZVAL_DEREF(arg2)
1391+
Z_PARAM_ZVAL_DEREF(ctor_args)
1392+
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
13841393

13851394
if (!pdo_stmt_verify_mode(stmt, how, 1)) {
13861395
RETURN_FALSE;
@@ -1698,9 +1707,10 @@ static PHP_METHOD(PDOStatement, setAttribute)
16981707
zval *value = NULL;
16991708
PHP_STMT_GET_OBJ;
17001709

1701-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "lz!", &attr, &value)) {
1702-
RETURN_FALSE;
1703-
}
1710+
ZEND_PARSE_PARAMETERS_START(2, 2)
1711+
Z_PARAM_LONG(attr)
1712+
Z_PARAM_ZVAL_DEREF_EX(value, 1, 0)
1713+
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
17041714

17051715
if (!stmt->methods->set_attribute) {
17061716
goto fail;
@@ -1739,9 +1749,9 @@ static PHP_METHOD(PDOStatement, getAttribute)
17391749
zend_long attr;
17401750
PHP_STMT_GET_OBJ;
17411751

1742-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "l", &attr)) {
1743-
RETURN_FALSE;
1744-
}
1752+
ZEND_PARSE_PARAMETERS_START(1, 1)
1753+
Z_PARAM_LONG(attr)
1754+
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
17451755

17461756
if (!stmt->methods->get_attribute) {
17471757
if (!generic_stmt_attr_get(stmt, return_value, attr)) {
@@ -1793,9 +1803,10 @@ static PHP_METHOD(PDOStatement, getColumnMeta)
17931803
struct pdo_column_data *col;
17941804
PHP_STMT_GET_OBJ;
17951805

1796-
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "l", &colno)) {
1797-
RETURN_FALSE;
1798-
}
1806+
ZEND_PARSE_PARAMETERS_START(1, 1)
1807+
Z_PARAM_LONG(colno)
1808+
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
1809+
17991810
if(colno < 0) {
18001811
pdo_raise_impl_error(stmt->dbh, stmt, "42P10", "column number must be non-negative");
18011812
RETURN_FALSE;

0 commit comments

Comments
 (0)