php编写函数6,编写自己的PHP扩展函数
php程序写的时间长了,自然对他所提供的功能了如指掌,他所提供的一大堆功能,真是觉得很好用,但有时候会发现php也缺少一些功能,自己总是会产生为php添加一些自定义的功能的想法。久而久之,终于今天憋不住了,开始动手研究如何添加。
下载一个php的源代码包,这里使用的是php 4.0.5版,解压后会看到php的根目录下会有README.EXT_SKEL这样一个文件,打开具体阅读了一下,发现了一个非常好用的工具,这个工具可以帮你构建一个空的php扩展,然后你向里面添加相应的代码就可以完成你自己的功能扩展了。下面我们就来介绍如何使用这个工具。
首先转移你的目录到php的目录下的ext目录,假如你只需要一个基本的扩展框架的话,执行下面的命令:
./ext_skel --extname=module_name
module_name是你自己可以选择的扩展模块的名字,例如我选择的my_module。执行工具后会自动在ext目录下建立你选择的module_name名字的目录,里面已经生成了相关的代码,这些代码中只需要调整config.m4文件中的三行注释就可以正常的编译带这个自定义扩展模块的php了。在php的根目录执行下列操作就可以得到。
./buildconf
./configure --enable-module_name
make
下面我来演示建立my_module扩展框架的全过程,为了更有效果,我们来完成一个php的扩展功能,在php中调用这个功能可以在web页面中显示hello world这个经典单词。
在php目录下的ext目录中,执行下面的命令
./ext_skel --extname=my_module
得到反馈结果:
Creating directory my_module
Creating basic files: config.m4 Makefile.in .cvsignore my_module.c php_my_module.h tests/001.phpt my_module.php [done].
To use your new extension, you will have to execute the following steps:
1. $ cd ..
2. $ vi ext/my_module/config.m4
3. $ ./buildconf
4. $ ./configure --[with|enable]-my_module
5. $ make
6. $ ./php -f ext/my_module/my_module.php
7. $ vi ext/my_module/my_module.c
8. $ make
Repeat steps 3-6 until you are satisfied with ext/my_module/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.
在文件的最后添加下列代码
PHP_FUNCTION(say_hello)
{
zend_printf("hello worldn");
}
保存文件退出
vi php_my_module.h
在文件中PHP_FUNCTION(confirm_my_module_compiled);一行前面添加下面的代码
PHP_FUNCTION(say_hello);
保存文件退出
退回到php的根目录下,执行下面的命令
./buildconf
./configure --enable-my_module
make
假如一切顺利的话,我们现在已经将扩展模块my_module编译到php里面了。我们编写下面的代码进行测试
Say_hello();
?>
保存文件为say_hello.php
在php的根目录下运行
./php
php编写函数6,编写自己的PHP扩展函数相关推荐
- R语言data.table导入数据实战:data.table中编写函数并使用SD数据对象
R语言data.table导入数据实战:data.table中编写函数并使用SD数据对象 目录 R语言data.table导入数据实战:data.table中编写函数并使用SD数据对象 #data.t ...
- 提高代码质量:如何编写函数
原文地址:http://luopq.com/2016/02/21/write-good-function/ 函数是实现程序功能的最基本单位,每一个程序都是由一个个最基本的函数构成的.写好一个函数是提 ...
- 编写函数,模拟内置函数 sorted()。
编写函数,模拟内置函数 sorted(). 用python来简单的模拟sorted可以用库函数来进行,也较为简单,我选了min()和sort()来进行模拟 利用min()函数 def sorteds( ...
- 编写函数,可以接收任意多个整数并输出其中的最大值和所有整数之和。
编写函数,可以接收任意多个整数并输出其中的最大值和所有整数之和. numbers = [] #创建空列表来装输入值mes = "Please enter number,and you can ...
- 编写函数实现员工信息录入和输出_编写我的第一个Linux 内核模块“hello_module”...
前言: Linux 内 核 模 块 全 称 为 " 动 态 可 加 载 内 核 模 块 (Loadable Kernel Module,LKM)",是系统内核向外部提供的功能插口. ...
- c语言数组将素数放在前部,m个人的成绩存放在score数组中,请编写函数fun(),它的功能是将高于平均分的人数作为函数值返回,将_开卷宝...
学生的记录由学号和成绩组成,N名学生的数据己在主函数中放入结构体数组s中,请编写函数fun(),它的 学生的记录由学号和成绩组成,N名学生的数据己在主函数中放入结构体数组s中,请编写函数fun(),它 ...
- 编写分段函数子函数_编写自己的函数
编写分段函数子函数 PYTHON编程 (PYTHON PROGRAMMING) In Python, you can define your own functions. 在Python中,您可以定义 ...
- mysql编写函数 求1 n 偶数之和,编写求1 2 3 - n的函数.在main函数中调用该函数
输入两个正整数m,n,编写求阶乘的函数,计算m!/(n!*(m-n)!). C语言函数解答,谢谢. #includelongfactorial(intm,intn){longsum=1,sum1=1; ...
- C语言九十四之请编写函数fun(char *str, int n),其功能是:使字符串str的前导*号不能多余n个,若多于n个,则删除多余的*号,若少于或等于n个,则不做处理。
1.题目 规定输入的字符串中只包含字母和*号,请编写函数fun(char *str, int n),其功能是:使字符串str的前导*号不能多余n个,若多于n个,则删除多余的*号,若少于或等于n个,则不 ...
最新文章
- linux 磁盘性能监控
- netcore实践:跨平台动态加载native组件
- 经典ICP算法的问题
- 写写最近吧,关于读研、找工作
- 容大打印机ip修改工具_M1芯片版Mac无法连接打印机怎么办?
- matlab中函数绝对值图像,ex的图像(绝对值的函数图像口诀)
- 【antlr】antlr语法中的fragment
- extjs的grid应用(java 使用json绑定数据 翻页)
- python3语法学习第四天--序列
- mysql 查看锁表_MySQL的四种事务隔离级别
- 自动驾驶仿真:Carsim、NI和VTD联合仿真课题一
- 2016二级java题型分数_2016年英语六级考试题型、试卷结构及分值比例
- List集合按数量分组
- 实现读文本文件(IOl流)
- 服务器向客户端推送消息之——WebSocket详细使用
- macos 打开终端弹出:(eval):export:1: not valid in this context: Fusion.app/Contents/Public
- 读透《阿里巴巴数据中台实践》,其到底有什么高明之处?
- c语言模拟洛伦兹吸引子,洛伦兹吸引子相图的简易实现.pdf
- 太原理工电子信焦工程_太原理工大学电工电子技术剖析.ppt
- vue实现登录路由跳转到成功页面
热门文章
- php 编程祝新年快乐_AnyCodes:免费的在线编程神器
- python时间重叠_最常见的重叠范围-Python3.x
- Deployment详解
- 可以插卡的ipad_ipad哪个可以插手机卡上网的?
- jstack-查看Java进程的线程堆栈信息,锁定高消耗资源代码
- Markdown编辑表格时如何输入竖线('|', pipe,vertical bar)
- linux定时刷新窗口,Linux的屏幕刷新率问题 窗口调整问题
- 关于python赋值语句下列选项中描述正确的是_关于Python的分支结构,以下选项中描述正确的是()。...
- shell中join链接多个域_shell 如何实现两个表的join操作
- 圆形百分比_还有半圆形的饼图!怎么做出来的?