据说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_LIBRA