当前位置:Gxlcms > PHP教程 > 由于php7内核升级,现在开发php扩展,是不是都要开发两个:php5和php7版的?

由于php7内核升级,现在开发php扩展,是不是都要开发两个:php5和php7版的?

时间:2021-07-01 10:21:17 帮助过:6人阅读

我查看过鸟哥的几个扩展,都是新拉个分支来写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版的扩展;
而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彻底稳定了再看看。

人气教程排行