PHP擴充套件相容PHP7遷移記錄

2021-09-23 23:19:19 字數 2004 閱讀 7154

php7擴充套件編寫的時候,提供的一些核心方法和之前的php之前的版本並不能完全相容。有不少方法引數做了調整。下面是在遷移過程中遇到的一些問題。記錄下來,避免大家再踩坑。

方法引數改為四個。

add_assoc_stringl(parray, key, value, value_len);

遷移的時候,只要把最後乙個引數刪除即可。

方法引數從四個改為了三個。

add_assoc_stringl(parray, key, value);

遷移的時候,只要把最後乙個引數刪除即可。

方法引數從四個改為了三個。

add_next_index_stringl(parray, value, value_len);

遷移的時候,只要把最後乙個引數刪除即可。

方法引數從三個改為了兩個。

add_next_index_string(parray, value);

遷移的時候,只要把最後乙個引數刪除即可。

方法引數從三個改為了二個。

return_stringl(value, length);

遷移的時候,只要把最後乙個引數刪除即可。

原因為深入研究。在 #include "php.h" 上面加上一行

#include

#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_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 和z_type_p巨集方法的定義。

php7中對於字串的處理使用zend_string進行儲存。如果想把zend_string 轉為 const char 。需要使用 zstr_val()巨集方法。**如下:

zend_string *str

;char *sptr;

.....

sptr = zstr_val(str);

已經沒有is_bool型別。而是分為了is_true 和 is_false.

已經沒有z_bval巨集。但是可以通過型別是否是 is_true和is_false來判定。

如果型別為is_true,則值為true。如果型別為is_false則值為false。

增加如下**:

static inline hsf_object *hsf_fetch_object(zend_object *obj) /* 

/* }}} */

#define z_userobj_p(zv) hsf_fetch_object(z_obj_p((zv)))

然後把zend_object_store_get_object改為z_userobj_p即可。

注意,user_object是你定義的結構體。

PHP擴充套件遷移為相容PHP7記錄

php7擴充套件編寫的時候,提供的一些核心方法和之前的php之前的版本並不能完全相容。有不少方法引數做了調整。下面是在遷移過程中遇到的一些問題。記錄下來,避免大家再踩坑。方法引數改為四個。add assoc stringl parray,key,value,value len 遷移的時候,只要把最後...

遷移到php7,遷移PHP版本到PHP7

這篇文章主要介紹了遷移php版本到php7的方法,需要的朋友可以參考下 今天看到微博上說phpng也就是php7合併到master上了,大家都知道我是比較喜歡 最新版本的東西,看看有什麼特性,我就忍不住公升級去了,以前我的php版本是5.5.19,然後我就開始了。yum install git gi...

遷移到php7,遷移PHP版本到PHP7

遷移php版本到php7 今天看到微博上說phpng也就是php7合併到master上了,大家都知道我是比較喜歡 最新版本的東西,看看有什麼特性,我就忍不住公升級去了,以前我的php版本是5.5.19,然後我就開始了。如下 yum install git git clone 如下 單核 intel ...