PHP扩展封装Protobuf反序列化方法(c++)

PHP扩展实现 Protobuf 反序列化
本文介绍了如何在PHP中使用C++封装protobuf进行反序列化操作。通过创建PHP扩展,利用protobuf的C++库,实现了PHP调用.NET SOA接口的数据交换。在扩展开发过程中,详细讨论了配置、编译以及处理新增数据类的方法,同时也解决了PHP和protobuf宏冲突的问题。

据说google的protobuf效率很高,我们决定尝试一下,使用到php项目中,作为反序列化的协议,调用.net的soa接口。

 

由于protobuf的源码只有java、c++、Python,我选用了c++作为开发语言,进行PHP扩展的开发。

 

首先,注意到与用c做PHP扩展的几点不同,主要集中在config.m4中:

 

 

PHP_ARG_ENABLE(protophp, whether to enable protophp support,

[  --enable-protophp           Enable protophp support])

 

if test "$PHP_PROTOPHP" != "no"; then

 

 

  PHP_REQUIRE_CXX()

  PHP_ADD_LIBRARY(stdc++, "", EXTRA_LDFLAGS)

  PHP_ADD_LIBRARY(protobuf, "", EXTRA_LDFLAGS)

 

  AC_DEFINE(HAVE_PROTOPHPLIB,1,[ ])

  CPPFILE="protophp.cpp addressbook.pb.cpp"

  PHP_NEW_EXTENSION(protophp, $CPPFILE, $ext_shared)

fi

 

 

其中PHP_REQUIRE_CXX()指明了使用c++作为开发语言,所以也就是用g++作为编译器。

PHP_ADD_LIBRARY将c++标准库和protobuf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值