比如,在php5版扩展下有如下定义:
typedef struct _test_obj {
zend_object std; // 放到头部
my_test_struct *my;
int count;
} test_obj;
根据php7扩展改进意见,该结构体需要修改为:
typedef struct _test_obj {
my_test_struct *my;
int count;
zend_object std; // 放到尾部
} test_obj;
等等,要是使用 宏
来包装,就会让代码看起来比较丑点,但是如果不这样,分两个分支开发的话,那每次都要修改两份代码,也比较费事。
不知道各位老大有什么好的思路,求赐教,谢谢!
我查看过鸟哥的几个扩展,都是新拉个分支来写php7版的扩展;
而swoole扩展,倒是使用了个php7-swapper.h来包装,但是它里面使用的php内核的东西相对来说比较好用宏来操作。
比如,在php5版扩展下有如下定义:
typedef struct _test_obj {
zend_object std; // 放到头部
my_test_struct *my;
int count;
} test_obj;
根据php7扩展改进意见,该结构体需要修改为:
typedef struct _test_obj {
my_test_struct *my;
int count;
zend_object std; // 放到尾部
} test_obj;
等等,要是使用 宏
来包装,就会让代码看起来比较丑点,但是如果不这样,分两个分支开发的话,那每次都要修改两份代码,也比较费事。
不知道各位老大有什么好的思路,求赐教,谢谢!
用户体验最佳的方式就是通过宏来写,这样用户就不必选择版本。当然这样写的弊端就是两块代码交叉会混杂,毕竟PHP7对基础架构改动颇大,虽然PHP7中自带的大部分宏还遵循老版本的写法,但堆上申请变量,一些与引用机制相关的,以及其他常用的宏都有所改变,所以合并写一块挑战还是挺大的。如果觉得麻烦,就如鸟哥一样分开写吧,目前大部分扩展也已分开的模式先进行编写,等较成熟时再合并到一起。
@有明 多谢,现在确定先分开写,等php7彻底稳定了再看看。