您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > PHP >

浅析PHP Extension开发基础篇(2)

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 06:20 点击:

如果你懒得弄清楚PHP扩展包目录结构的全部内容,那么里面有三个文件你必须注意:

config.m4:这是Unix环境下的Build System配置文件,后面将会通过它生成配置和安装。

php_say_hello.h:这个文件是扩展模块的头文件。遵循C语言一贯的作风,这个里面可以放置一些自定义的结构体、全局变量等等。

say_hello.c:这个就是扩展模块的主程序文件了,最终的扩展模块各个函数入口都在这里。当然,你可以将所有程序代码都塞到这里面,也可以遵循模块化思想,将各个功能模块放到不同文件中。

下面的内容主要围绕这三个文件展开。

Unix Build System配置

开发PHP扩展组件的第一步不是写实现代码,而是要先配置好Build System选项。由于我们是在Linux下开发,所以这里的配置主要与config.m4有关。

关于Build System配置这一块,要是写起来能写一大堆,而且与Unix系统很多东西相关,就算我有兴趣写估计大家也没兴趣看,所以这里我们从略,只拣关键地方说一下,关于config.m4更多细节可以参考这里。

打开生成的config.m4文件,内容大致如下:

dnl $Id___FCKpd___4nbsp;   dnl config.m4 for extension say_hello    dnl Comments in this file start with the string dnl.    dnl Remove where necessary. This file will not work     dnl without editing.     dnl If your extension references something external, use with:    dnl PHP_ARG_WITH(say_hello, for say_hello support,    dnl Make sure that the comment is aligned:    dnl [  --with-say_hello             Include say_hello support])    dnl Otherwise use enable:    dnl PHP_ARG_ENABLE(say_hello, whether to enable say_hello support,    dnl Make sure that the comment is aligned:    dnl [  --enable-say_hello           Enable say_hello support])    if test "$PHP_SAY_HELLO" != "no"; then    dnl Write more examples of tests here...     dnl # --with-say_hello -> check with-path     dnl SEARCH_PATH="/usr/local /usr"     # you might want to change this     dnl SEARCH_FOR="/include/say_hello.h"  # you most likely want to change this    dnl if test -r $PHP_SAY_HELLO/$SEARCH_FOR; then # path given as parameter     dnl   SAY_HELLO_DIR=$PHP_SAY_HELLO     dnl else # search default path list    dnl   AC_MSG_CHECKING([for say_hello files in default path])     dnl   for i in $SEARCH_PATH ; do   dnl     if test -r $i/$SEARCH_FOR; then    dnl       SAY_HELLO_DIR=$i     dnl       AC_MSG_RESULT(found in $i)     dnl     fi    dnl   done    dnl fi   dnl     dnl if test -z "$SAY_HELLO_DIR"; then    dnl   AC_MSG_RESULT([not found])     dnl   AC_MSG_ERROR([Please reinstall the say_hello distribution])     dnl fi    dnl # --with-say_hello -> add include path     dnl PHP_ADD_INCLUDE($SAY_HELLO_DIR/include)     dnl # --with-say_hello -> check for lib and symbol presence      dnl LIBNAME=say_hello # you may want to change this       dnl LIBSYMBOL=say_hello # you most likely want to change this      dnl PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,     dnl [     dnl   PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $SAY_HELLO_DIR/lib, SAY_HELLO_SHARED_LIBADD)      dnl   AC_DEFINE(HAVE_SAY_HELLOLIB,1,[ ])      dnl ],[      dnl   AC_MSG_ERROR([wrong

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • PHP测试
    • 十天学会php之第六天
    • 几种显示数据的方法的比较
    • 使用xmlhttp为网站增加域名查询功能
    • PHP+MYSQL+Javascript数据库查询结果的动态显示
    • 查找数组中指定键名的值
    • 用redis实现跨服务器session
    • 用新浪微博接口发送图片微博失败的原因
    • smarty局部缓存技术[源码分析]
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1