PHP扩展迁移到php7扩展兼容性问题记录

PHP扩展迁移到php7扩展兼容性问题记录
当php7扩展写,内核的某些方法和以前的PHP以前的版本不完全兼容。有调整参数的方法很多,以下是一些遇到的问题,在迁移过程中保留下来,以避免任何踩坑。

add_assoc_stringl

方法参数更改为四。

add_assoc_stringl(粒子阵列,关键值,value_len);

迁移时,只需删除最后一个参数。

add_assoc_string

方法参数从四更改为三。

add_assoc_stringl(粒子阵列,关键值);

迁移时,只需删除最后一个参数。

add_next_index_stringl

方法参数从四更改为三。

add_next_index_stringl(粒子阵列,价值,value_len);

迁移时,只需删除最后一个参数。

add_next_index_string

方法参数从三改为2。

add_next_index_string(粒子阵列,值);

迁移时,只需删除最后一个参数。

return_stringl

方法参数从三改为2。

return_stringl(值长);

迁移时,只需删除最后一个参数。

错误:int64_max没有在这个范围内声明

原因是深入研究。添加一行#包括PHP。H
#包括
#则int64_max
#定义int64_max int64_c(922337203685477580)
# endif
#则int64_min
#定义int64_min(- int64_c(922337203685477580)- 1)
# endif
解决u3002

创建

你可以参考的mysqli在mysqli扩展mysqli_objects_new C文件的方法。

变量声明从堆中分配,并更改为堆栈。

例如,原始代码是
* sarray_l zval;
alloc_init_zval(sarray_l);
array_init(sarray_l);
相反
sarray_l zval;
array_init(sarray_l);
zend_hash_get_current_key_ex
方法参数从六更改为四。
zend_api zend_fastcall zend_hash_get_current_key_ex(const int哈希表* HT,zend_string ** str_index,zend_ulong * num_index,hashposition);
迁移时,只需删除第三和第五个参数。

错误:z_type_pp没有在这个范围内声明

没有z_type_pp宏,唯一的z_type和z_type_p宏定义方法。

H2的错误:不能被转换从zend_string *到const char *

在php7字符串处理使用zend_string.if你想把zend_string const char*存储。你需要使用zstr_val()宏法,代码如下:
zend_string * STR;
char *果实;
的…
果实= zstr_val(STR);
错误:is_bool没有在这个范围内声明

没有is_bool型。它分为is_true和is_false。

错误:z_bval没有在这个范围内声明

没有z_bval宏。但它可以判断是否是is_true和is_false。

如果类型是is_true,价值是真实的,如果是is_false类型,该值为false。

错误:zend_object_store_get_object没有在这个范围内声明

添加以下代码:
静态内联hsf_object * hsf_fetch_object(zend_object * OBJ){ / / *
返回(user_object *)((char *)(obj)- XtOffsetOf(user_object,STD));
}

#定义z_userobj_p(ZV)hsf_fetch_object(z_obj_p((((ZV)))
然后改变zend_object_store_get_object到z_userobj_p。

注意,user_object是你定义的结构。

上面的描述是有关PHP扩展迁移到php7扩展兼容性问题的记录,希望对你有帮助。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部