麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 開發(fā) > PHP > 正文

PHP擴(kuò)展遷移為PHP7擴(kuò)展兼容性問(wèn)題記錄

2024-05-04 23:43:03
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
PHP7擴(kuò)展編寫的時(shí)候,提供的一些內(nèi)核方法和之前的PHP之前的版本并不能完全兼容。有不少方法參數(shù)做了調(diào)整。下面是在遷移過(guò)程中遇到的一些問(wèn)題,感興趣的朋友參考下吧
 

PHP7擴(kuò)展編寫的時(shí)候,提供的一些內(nèi)核方法和之前的PHP之前的版本并不能完全兼容。有不少方法參數(shù)做了調(diào)整。下面是在遷移過(guò)程中遇到的一些問(wèn)題。記錄下來(lái),避免大家再踩坑。

add_assoc_stringl

方法參數(shù)改為四個(gè)。

add_assoc_stringl(parray, key, value, value_len);

遷移的時(shí)候,只要把最后一個(gè)參數(shù)刪除即可。

add_assoc_string

方法參數(shù)從四個(gè)改為了三個(gè)。

add_assoc_stringl(parray, key, value);

遷移的時(shí)候,只要把最后一個(gè)參數(shù)刪除即可。

add_next_index_stringl

方法參數(shù)從四個(gè)改為了三個(gè)。

add_next_index_stringl(parray, value, value_len);

遷移的時(shí)候,只要把最后一個(gè)參數(shù)刪除即可。

add_next_index_string

方法參數(shù)從三個(gè)改為了兩個(gè)。

add_next_index_string(parray, value);

遷移的時(shí)候,只要把最后一個(gè)參數(shù)刪除即可。

RETURN_STRINGL

方法參數(shù)從三個(gè)改為了二個(gè)。

RETURN_STRINGL(value, length);

遷移的時(shí)候,只要把最后一個(gè)參數(shù)刪除即可。

錯(cuò)誤:‘INT64_MAX' 在此作用域中尚未聲明

原因?yàn)樯钊胙芯俊T?#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

解決。

創(chuàng)建類

可以參考mysqli擴(kuò)展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

方法參數(shù)從六個(gè)改為了四個(gè)。

ZEND_API int ZEND_FASTCALL zend_hash_get_current_key_ex(const HashTable *ht, zend_string **str_index, zend_ulong *num_index, HashPosition *pos);

遷移的時(shí)候,只要把第三個(gè)和第五個(gè)參數(shù)刪除即可。

錯(cuò)誤:‘Z_TYPE_PP' 在此作用域中尚未聲明

已經(jīng)沒(méi)有Z_TYPE_PP宏,只有Z_TYPE 和Z_TYPE_P宏方法的定義。

h2錯(cuò)誤:不能從 ‘zend_string*' 轉(zhuǎn)換到 ‘const char*'

PHP7中對(duì)于字符串的處理使用zend_string進(jìn)行存儲(chǔ)。如果想把zend_string 轉(zhuǎn)為 const char 。需要使用 ZSTR_VAL()宏方法。代碼如下:

zend_string *str;char *sptr;.....sptr = ZSTR_VAL(str);

錯(cuò)誤:‘IS_BOOL' 在此作用域中尚未聲明

已經(jīng)沒(méi)有IS_BOOL類型。而是分為了IS_TRUE 和 IS_FALSE.

錯(cuò)誤:‘Z_BVAL' 在此作用域中尚未聲明

已經(jīng)沒(méi)有Z_BVAL宏。但是可以通過(guò)類型是否是 IS_TRUE和IS_FALSE來(lái)判定。

如果類型為IS_TRUE,則值為true。如果類型為IS_FALSE則值為false。

錯(cuò)誤:‘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是你定義的結(jié)構(gòu)體。

以上所述是針對(duì)PHP擴(kuò)展遷移為PHP7擴(kuò)展兼容性問(wèn)題記錄的相關(guān)敘述,希望對(duì)大家有所幫助。



注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到PHP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久久久久久久久久久久久久久久久 | 国产高潮好爽受不了了夜色 | 激情小视频在线观看 | 久久亚洲春色中文字幕久久 | 国产一区二区三区视频观看 | 91短视频在线视频 | 天堂精品久久 | 国产精品亚洲欧美一级在线 | 欧美日韩在线中文字幕 | 毛片网站网址 | 日本免费aaa观看 | 日本aaaa片毛片免费观看视频 | 看免费一级毛片 | 中文字幕在线观看精品 | 黄污网址 | 无码av女优 | 91欧美视频| 国产精品久久久免费 | 亚洲欧美不卡视频 | 国产69精品福利视频 | 香蕉视频破解 | 久久av免费观看 | 激情视频免费看 | 日本aaaa片毛片免费观蜜桃 | 国产一区二区三区四区精 | 中国大陆一级毛片 | 一边吃奶一边插下面 | 国产毛片在线高清视频 | 国产成人精品一区在线播放 | 国产深夜福利视频在线播放 | 成人 在线 | 毛片视频网站在线观看 | 国产无限资源在线观看 | 久久99精品久久久久久青青日本 | 国产女同疯狂激烈互摸 | 中文字幕一区在线观看视频 | 日韩a毛片免费观看 | 美女黄视频在线观看 | 婷婷一区二区三区 | 亚洲成人黄色片 | 性欧美xxxx免费岛国不卡电影 |