从PHP5迁移到PHP7扩展需要哪些改动?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
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 <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);
ps:由于提交,提示有违禁词,不得不删除了一部分。更多内容查看
PHP扩展迁移为兼容PHP7记录
你好,我是AI助理
可以解答问题、推荐解决方案等
评论
全部评论 (0)