2015-05-27
在linux下面完成了LAMP的配置环境之后,就可以进行php的扩展开发了。
php中的扩展开发都在源码包的/ext文件夹之下,可以看到这里已经有了很多开发好的扩展。比如与数据库相关的mysql以及xml处理的模块等等。
首先建立一个文件夹:
mkdir hello
在进入这个文件夹之后,先创建并打开一个配置文件:
vim config.m4
这个给出一个配置问题的实例:
1 PHP_ARG_ENABLE(sample, whether to enable SAMPLE support,2 [ --enable-sample Enable SAMPLE support])3 if test "$PHP_SAMPLE" = "yes"; then4 AC_DEFINE(SAMPLE, 1, [Whether you have SAMPLE])5 PHP_NEW_EXTENSION(sample, sample.c, $ext_shared)6 fi* 这个配置文件创造了一个--enable-hello的配置选项,而PHP_ARG_ENABLE的第二个选项会在配置的时候显示出来
1 ?#ifndef PHP_SAMPLE_H2 /* 防止两次引入 */3 #define PHP_SAMPLE_H4 /* 定义扩展的性质 */5 #define PHP_SAMPLE_EXTNAME "sample"6 #define PHP_SAMPLE_EXTVER "1.0"7 /* 当在php的源码树之外build的时候,引入配置选项, 在使用phpize工具时,一般都是先定义的 */8 #ifdef HAVE_CONFIG_H9 #include "config.h"10 #endif11 /* 引入php标准头文件 */12 #include "php.h"13 PHP_FUNCTION(hello_world);//声明扩展中的函数14 /* 定义入口点的符号,zend在加载这个module的时候会用*/15 extern zend_module_entry sample_module_entry;16 #define phpext_sample_ptr &sample_module_entry17 #endif /* PHP_SAMPLE_H */最后再注意两点:* php.h则是一定要引入的
#include "php_sample.h" static function_entry php_sample_functions[] = { PHP_FE(sample_hello_world, NULL)//任何扩展中的函数都要在这里声明。把函数名输出到了用户空间中 { NULL, NULL, NULL } };zend_module_entry sample_module_entry = { //创建一个入口 #if ZEND_MODULE_API_NO >= 20010901 //这个是一个版本号 STANDARD_MODULE_HEADER, #endif PHP_SAMPLE_EXTNAME, php_sample_functions, /* Functions 这里是把php_function加入到Zend中去*/ NULL, /* MINIT */ NULL, /* MSHUTDOWN */ NULL, /* RINIT */ NULL, /* RSHUTDOWN */ NULL, /* MINFO */ #if ZEND_MODULE_API_NO >= 20010901 PHP_SAMPLE_EXTVER, #endif STANDARD_MODULE_PROPERTIES};#ifdef COMPILE_DL_SAMPLEZEND_GET_MODULE(sample)#endif //这块区域是当扩展被动态加载的时候,为Zend添加一个引用,记得要添加上就行。/*真正的函数体的部分*/PHP_FUNCTION(sample_hello_world){ php_printf("Hello World!/n");}这就是源码的内容了。
1
CI框架连接数据库配置操作以及多数据库操作
09-05
2
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
05-17
3
C语言关键字及其解释介绍 C语言32个关键字详解
04-05
4
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
04-26
5
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
04-12
6
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
09-05
7
PHP中的(++i)前缀自增 和 (i++)后缀自增
09-05
8
PHP中include和require区别之我见
09-05
常用dos命令及语法
2014-09-27
将视频设置为Android手机开机动画的教程
2014-12-11
php递归返回值的问题
2014-09-05
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
java中的info是什么意思
2022-03-24
PHP 教程之如何使用BLOB存取图片信息实例
2014-09-05
IcePHP框架中的快速后台中的通用CRUD功能框架
2014-09-05
单片机编程好学吗?单片机初学者怎样看懂代码
2022-03-21
PHP数组函数array
2014-09-05
学ug编程如何快速入门?
2022-03-17
罗布乐思roblox国际服最新版官方正版下载v2.682.538 安卓版
动作闯关 131.0M
下载com.roblox.client国际服下载v2.682.538 安卓版
经营养成 131.0M
下载绝地鸭卫游戏下载v0.2.3 安卓版
动作闯关 671.4M
下载梦幻模拟战官服下载v6.13.2110 安卓最新版
角色扮演 1.95G
下载天龙八部手游8868版下载v1.133.2.2 安卓版
角色扮演 1.97G
下载天龙八部游戏下载v1.133.2.2 安卓手机版
动作闯关 1.97G
下载天龙八部手游果盘端下载v1.133.2.2 安卓版
角色扮演 1.97G
下载海贼王燃烧意志官方版下载v3.3.0.492700 安卓正版
角色扮演 1.56G
下载宝宝巴士安慰小宝宝下载v9.87.00.01 安卓版
下载
乐乐捕鱼任达华官方正版下载v10.2.0.0 安卓3d版
下载
巨兽战场手游下载v3.1.9 安卓版
下载
放置江湖官方正版下载v2.1.01 安卓版
下载
口袋吉伊卡哇游戏(Chiikawa Pocket)下载v1.3.0 安卓国际版
下载
仙剑奇侠传官方手游下载v1.1.86 安卓最新版本
下载
文豪与炼金术师游戏(文アル)下载v1.1.60 安卓版
下载
新盗墓笔记正版手游下载v1.215.890111 安卓版
下载