文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PHP扩展入门 我的第一个扩展

2024-02-27 20:20

关注

虽说现在的PHP功能已经非常完善,一般情况下不需要我们自己手动扩展就已经可以完全支持我们的使用。但是,我觉得掌握扩展PHP这门技术对于我们以后的发展应该是很有帮助的。

下面我就带大家开始扩展PHP。

首先我们需要下载PHP源码。下载完成以后,我们第一步要做的就是安装PHP。准备工作完成以后,下面开始我们正式的PHP扩展。

我们的源码根目录以/software/php5为例。

生成骨架

在源码根目录下有ext文件夹,我们进入该文件夹

# cd /software/php5/ext

然后使用其扩展工具ext_skel来生成相应的骨架。

# ./ext_skel –extname=onmpw   //--extname选项的作用就是指定扩展的名称。

该命令执行完成以后,输出如下的内容

Creating directory onmpw
Creating basic files: config.m4 config.w32 .svnignore onmpw.c php_onmpw.h CREDITS EXPERIMENTAL tests/001.phpt onmpw.php [done].
 
To use your new extension, you will have to execute the following steps:
 
1.  $ cd ..
2.  $ vi ext/onmpw/config.m4
3.  $ ./buildconf
4.  $ ./configure --[with|enable]-onmpw
5.  $ make
6.  $ ./sapi/cli/php -f ext/onmpw/onmpw.php
7.  $ vi ext/onmpw/onmpw.c
8.  $ make
 
Repeat steps 3-6 until you are satisfied with ext/onmpw/config.m4 and
step 6 confirms that your module is compiled into PHP. Then, start writing
code and repeat the last two steps as often as necessary.

这说明我们的命令已经成功执行。我们发现在ext目录下会产生一个onmpw文件夹。查看该文件夹中的内容,会有下面的几个文件。

config.m4  config.w32  CREDITS  EXPERIMENTAL  onmpw.c  onmpw.php  php_onmpw.h  tests

编辑文件

接着我们编辑config.m4文件,找到如下的内容

dnl PHP_ARG_ENABLE(onmpw, whether to enable onmpw support,
dnl Make sure that the comment is aligned:
dnl [  --enable-onmpw           Enable onmpw support])

然后将注释去掉,也就是删掉每行开头的dnl。

打开onmpw.c文件,在文件的最后添加如下代码

PHP_FUNCTION(onmpw_hello_world)
{
        php_printf("Hello World!!\r\n");
}

这里面就是我们的方法体。onmpw_hello_world是方法名称,也就是我们在php代码中调用的方法名。

const zend_function_entry zts_research_functions[] = {
        PHP_FE(onmpw_hello_world,        NULL)
        PHP_FE_END     
};

然后我们找到上面的代码,按照上面的形式添加PHP_FE(onmpw_hello_world, NULL)。修改完成以后保存退出。

然后再编辑php_onmpw.h文件。在大概45行的位置添加如下代码

PHP_FUNCTION(onmpw_hello_world);

然后保存退出。

编译扩展

我们PHP安装目录以/usr/local/php5为例。

这里编译分两种情况,一种是动态编译,一种是静态编译。下面我们先来看如何进行动态编译。

动态编译

动态编译需要用到一个工具phpize。该工具在/usr/local/php5/bin 目录下。动态编译步骤如下:

# cd ext/onmpw   //进入扩展目录
# /usr/local/php5/bin/phpize  //生成配置文件等
# ./configure –php-config=/usr/local/php5/bin/php-config
# make && make install

成功以后会在/usr/local/php5//lib/php/extensions/no-debug-non-zts-20121212/目录下产生onmpw.so类库。然后我们在php.ini中引入该类库就可以使用了。

静态编译

静态编译相当于重新编译安装php,但是静态编译成功后不需要我们再在php.ini文件中进行配置就可以使用我们的扩展。

进行静态编译需要用到buildconf这个工具,该工具在源码根目录下。静态编译的步骤如下

# cd /software/php5
# ./buildconf –force
# ./configure –enable-onmpw
# make && make install

这样就可以在php代码中直接使用hello_world函数了。

通过以上的步骤我们就可以实现自己的php扩展了。这里需要说明一下,在开头部分,我们讲到将扩展放到源码根目录下的ext目录下。其实这并不是必须的,只是为了便于管理,我们可以将其放在任何的位置。比如/extensions目录下。但是,在使用ext_skel生成骨架的时候要使用—skel选项来指定目录这个目录就是源码中的ext/skeleton。

# cd /extensions
# /software/php5/ext/ext_skel –extname=onmpw –skel=/software/php5/ext/skeleton

到这,基本上一个完整的简单的扩展就可以实现了。希望本文对大家有所帮助。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯