如何构建在多个PHP版本中运行的PHP扩展


How to build a PHP extension that runs in many PHP versions?

我使用c++创建了一个PHP扩展。我想把我的扩展以二进制形式发送给我的客户。这意味着我需要为每个PHP版本(5.2、5.3、5.4、5.5)和每个处理器架构构建一个单独的版本。

我的问题是:

  1. 为什么他们不断更新API时间戳,而API本身似乎没有改变?在升级系统以使用下一个PHP版本时,它不会消除很多令人头痛的问题吗?只是为了比较,我也有一个使用XLL API的MS Excel扩展版本,该API自2003年以来一直保持向后兼容,这使我能够为所有客户端提供两个二进制文件(32位和64位)。

  2. 有没有办法解决这个问题?也就是说,有一种方法来建立一个PHP扩展,可以在多个PHP版本运行?

也许您可以尝试混合方法。单独编译c++库,然后为其创建一个开源PHP扩展包装器。PHP扩展几乎没有自己的逻辑。它将数据类型从PHP来回转换为C/c++,并将参数传递给c++库中实现的函数/方法。

然后,您只需维护每个平台的库的二进制版本,并且采用特定的PHP版本是由开源PHP扩展完成的。

这当然要求客户的系统安装了PHP开发包,以及编译器。