您好,登錄后才能下訂單哦!
這篇文章主要介紹“PHP擴展遷移為PHP7擴展兼容性的參數調整”,在日常操作中,相信很多人在PHP擴展遷移為PHP7擴展兼容性的參數調整問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP擴展遷移為PHP7擴展兼容性的參數調整”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
add_assoc_stringl
方法參數改為四個。
add_assoc_stringl(parray, key, value, value_len);
遷移的時候,只要把最后一個參數刪除即可。
add_assoc_string
方法參數從四個改為了三個。
add_assoc_stringl(parray, key, value);
遷移的時候,只要把最后一個參數刪除即可。
add_next_index_stringl
方法參數從四個改為了三個。
add_next_index_stringl(parray, value, value_len);
遷移的時候,只要把最后一個參數刪除即可。
add_next_index_string
方法參數從三個改為了兩個。
add_next_index_string(parray, value);
遷移的時候,只要把最后一個參數刪除即可。
RETURN_STRINGL
方法參數從三個改為了二個。
RETURN_STRINGL(value, length);
遷移的時候,只要把最后一個參數刪除即可。
錯誤:‘INT64_MAX' 在此作用域中尚未聲明
原因為深入研究。在 #include "php.h" 上面加上一行
#include <stdint.h> #ifndef INT64_MAX # define INT64_MAX INT64_C( 9223372036854775807) #endif #ifndef INT64_MIN # define INT64_MIN (-INT64_C( 9223372036854775807)-1) #endif
解決。
創建類
可以參考mysqli擴展mysqli.c文件中的 mysqli_objects_new 方法。
變量聲明從堆上分配,改為棧上分配。
如,原先代碼為
zval* sarray_l; ALLOC_INIT_ZVAL(sarray_l); array_init(sarray_l);
改為
zval sarray_l; array_init(&sarray_l); zend_hash_get_current_key_ex
方法參數從六個改為了四個。
ZEND_API int ZEND_FASTCALL zend_hash_get_current_key_ex(const HashTable *ht, zend_string **str_index, zend_ulong *num_index, HashPosition *pos);
遷移的時候,只要把第三個和第五個參數刪除即可。
錯誤:‘Z_TYPE_PP' 在此作用域中尚未聲明
已經沒有Z_TYPE_PP宏,只有Z_TYPE 和Z_TYPE_P宏方法的定義。
h3錯誤:不能從 ‘zend_string*' 轉換到 ‘const char*'
PHP7中對于字符串的處理使用zend_string進行存儲。如果想把zend_string 轉為 const char 。需要使用 ZSTR_VAL()宏方法。代碼如下:
zend_string *str; char *sptr; ..... sptr = ZSTR_VAL(str);
錯誤:‘IS_BOOL' 在此作用域中尚未聲明
已經沒有IS_BOOL類型。而是分為了IS_TRUE 和 IS_FALSE.
錯誤:‘Z_BVAL' 在此作用域中尚未聲明
已經沒有Z_BVAL宏。但是可以通過類型是否是 IS_TRUE和IS_FALSE來判定。
如果類型為IS_TRUE,則值為true。如果類型為IS_FALSE則值為false。
錯誤:‘zend_object_store_get_object' 在此作用域中尚未聲明
增加如下代碼:
static inline hsf_object *hsf_fetch_object(zend_object *obj) /* {{{ */ { return (user_object *)((char*)(obj) - XtOffsetOf(user_object, std)); } /* }}} */ #define Z_USEROBJ_P(zv) hsf_fetch_object(Z_OBJ_P((zv)))
然后把zend_object_store_get_object改為Z_USEROBJ_P即可。
注意,user_object是你定義的結構體。
到此,關于“PHP擴展遷移為PHP7擴展兼容性的參數調整”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。