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
gt;
#ifndef int64_max
#endif
#ifndef int64_min
#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
巨集方法的定義。
<>h2錯誤:不能從 '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_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 ...