PHP 5.3 已經 deprecate zend_get_parameters_ex

這幾天在把一個程式作 PHP 5.2 轉換到 PHP 5.3 的環境下,發現以前有一個 zend_get_parameters_ex 已經被 deprecated 了。

Example:


zend_get_parameters_ex( 1 , &arg1 )

簡單一點的改法就是把他改使用 zend_parse_parameters 這個 method 。

Example :


zend_parse_parameters(  ZEND_NUM_ARGS() TSRMLS_CC , "sz" , &arg1, &arg1_len, &arg2)

這個 function 比較方便,也可以不用把 zval 轉成 c 所需要的型態,可以直接放入原有的參數型態,像使用 char or long 一些原生參數就方便多了。

Old Method Example:


zval **arg1;
std::string str;
zend_get_parameters_ex( 1 , &arg1 ) ;
convert_to_string_ex( arg1 );
str = Z_STRVAL_PP( arg1 );

New Method Example:


char *arg1;
int arg1_len;
std::string str;
zend_parse_parameters(  ZEND_NUM_ARGS() TSRMLS_CC , "s" , &arg1, &arg1_len);
str = string(arg1);