php扩展兼容,PHP扩展迁移为PHP7扩展兼容性问题记录,php7兼容性_PHP教程
PHP扩展迁移为PHP7扩展兼容性问题记录,php7兼容性
PHP7扩展编写的时候,提供的一些内核方法和之前的PHP之前的版本并不能完全兼容。有不少方法参数做了调整。下面是在迁移过程中遇到的一些问题。记录下来,避免大家再踩坑。
add_assoc_stringl
方法参数改为四个。
add_assoc_stringl(parray, key, value, value_len);
迁移的时候,只要把最后一个参数删除即可。
add_assoc_string
方法参数从四个改为了三个。
add_assoc_stringl(parray, key, value);
迁移的时候,只要把最后一个参数删除即可。
add_next_index_stringl
方法参数从四个改为了三个。
add_next_index_stringl(parray, value, value_len);
迁移的时候,只要把最后一个参数删除即可。
add_next_index_string
方法参数从三个改为了两个。
add_next_index_string(parray, value);
迁移的时候,只要把最后一个参数删除即可。
RETURN_STRINGL
方法参数从三个改为了二个。
RETURN_STRINGL(value, length);
迁移的时候,只要把最后一个参数删除即可。
错误:‘INT64_MAX' 在此作用域中尚未声明
原因为深入研究。在 #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_hash_get_current_key_ex
方法参数从六个改为了四个。
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_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_BOOL类型。而是分为了IS_TRUE 和 IS_FALSE.
错误:‘Z_BVAL' 在此作用域中尚未声明
已经没有Z_BVAL宏。但是可以通过类型是否是 IS_TRUE和IS_FALSE来判定。
如果类型为IS_TRUE,则值为true。如果类型为IS_FALSE则值为false。
错误:‘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是你定义的结构体。
以上所述是针对PHP扩展迁移为PHP7扩展兼容性问题记录的相关叙述,希望对大家有所帮助。
您可能感兴趣的文章:ECshop 迁移到 PHP7版本时遇到的兼容性问题
http://www.bkjia.com/PHPjc/1100318.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1100318.htmlTechArticlePHP扩展迁移为PHP7扩展兼容性问题记录,php7兼容性 PHP7扩展编写的时候,提供的一些内核方法和之前的PHP之前的版本并不能完全兼容。有不少...
php扩展兼容,PHP扩展迁移为PHP7扩展兼容性问题记录,php7兼容性_PHP教程相关推荐
- PHP扩展迁移为PHP7扩展兼容性问题记录
PHP7扩展编写的时候,提供的一些内核方法和之前的PHP之前的版本并不能完全兼容.有不少方法参数做了调整.下面是在迁移过程中遇到的一些问题.记录下来,避免大家再踩坑. add_assoc_string ...
- php5项目迁移到php7,php5扩展迁移php7扩展
记录一下PHP5扩展升级到PHP7扩展的一些点,覆盖十分不全,只是自己在工作中的遇到项目的一些改动. 1, zend_hash_get_current_data_ex php5 定义:1ZEND_AP ...
- php7 扩展 性能测试,php7简单性能测试
(一) 一个简单的测试 看看php7跑多快(就不罗列电脑配置了,因为环境是一样的) 1 测试代码: /** * test.php ; compare php5.6.7 with php7.0.0alp ...
- linux php7扩展查看,linux安装PHP7以及扩展
Linux下安装PHP7 事先升级gcc4.8,然后安装PHP7,安装步骤参考:CentOS安装PHP7 1.Linux下编译的php没有php.ini 解决办法:从源代码目录中复制php.ini-d ...
- php7不支持mysql扩展了么_php7不支持mysql扩展需要改成mysqli扩展
最近升级php7发现不支持mysql扩展,需要改成用mysqli扩展 看代码class Db{ private $username = ''; private $password = ''; priv ...
- php获取字符串扩展,PHP7扩展开发之字符串处理
标签: 本文和大家分享的主要是PHP7扩展开发中字符串的处理相关知识,希望通过本文的分享能帮助大家更好的学习php. 这次,我们来看看字符串在PHP扩展里面如何处理. 示例代码如下: $len = s ...
- ubuntu php7 memcache,linux上安装php7 memcache扩展
php7安装memcache扩展需要memcache php7的分支 否则安装会失败 php7的memcache扩展安装,真的很让人心碎! 下面则是php7的扩展memcache安装了. 用之前的 ...
- php7.2.7curl扩展,如何使用PHP 7安装ext-curl扩展?
如何使用PHP 7安装ext-curl扩展? 我使用这个repo安装了PHP 7,但是当我尝试运行composer install时,它给出了这个错误: [包]需要ext-curl * - > ...
- php7扩展开发教程,Linux下PHP7扩展开发入门教程1:扩展开发流程
本文将会基于PHP7开发一个最简单的扩展,随便取个名learn_ext,编译生成一个learn_ext.so文件,最终调用可以在php中调用learn_ext扩展中的函数来输出一个hello worl ...
最新文章
- 科普丨让机器看见世界,这背后的技术是什么?
- const 与 static readonly 的区别
- 使用 Linux 子系统部署 Node、Gradle 项目的构建工具
- 飞桨 第一课 传统图像识别是怎么做的+Aistudio python数据可视化2020.3.31;2020.4.2补
- linux下编辑aacc.sh脚本命令,Shell命令实战详解
- SpringMVC一例 是否需要重定向
- Strategy(策略)--对象行为型模式
- python数字类型怎么学,python的数字类型学习之数据类型
- LeetCode 700. 二叉搜索树中的搜索
- python 强制结束线程_在python中实现强制关闭线程的示例
- 合并果子(洛谷-P1090)
- 最长单词(信息学奥赛一本通-T1149)
- 统计数字字符和空格 (15 分)
- “打击式教育”盛行?数据分析剖析“中式父母”的“打压式教育”
- vue实现对数据的增删改查(CURD)
- EOS.IO技术学习
- java 生日 计算_java根据生日计算当前年龄,精确到月
- UVALive5461 UVA615 POJ1308 Is It A Tree?(解法二)【废除!!!】
- 数据命脉:未来将性命攸关
- web前端开发(一)—HTML基础