一、基础知识
PHP内核介绍及扩展开发指南——基础知识:PHP变量的存储
PHP内核介绍及扩展开发指南——基础知识:HashTable结构
二、Extensions 的编写
PHP内核介绍及扩展开发指南——Extensions 的编写:Hello World
PHP内核介绍及扩展开发指南——Extensions 的编写:使用参数
PHP内核介绍及扩展开发指南——Extensions 的编写:返回值
PHP内核介绍及扩展开发指南——Extensions 的编写:启动和终止函数、调用PHP函数
PHP内核介绍及扩展开发指南——Extensions 的编写:访问PHP变量
PHP内核介绍及扩展开发指南——Extensions 的编写:输出信息
PHP内核介绍及扩展开发指南——高级主题
Extension的编译是比较简单的,下面是个示例Makefile:
# 扩展搜索目录,模块被放到这里才能被找到和加载
# 可以从php.ini中的extension_dir命令获取该值
PHP_EXT_HOME=/home/wiki/php5/lib/php/extensions/
# PHP源代码路径
PHP_SRC=/home/wiki/wikienv/install/php-5.2.3
INCLUDE=-I$(PHP_SRC) -I$(PHP_SRC)/main -I$(PHP_SRC)/TSRM -I$(PHP_SRC)/Zend
CC=gcc
all: first_module.so
first_module.so: first_module.o
$(CC) -shared -rdynamic -o first_module.so first_module.o
# 注意不要忘了“-DCOMPILE_DL_FIRST_MODULE=1”,否则不会导出get_module()
first_module.o: first_module.c
$(CC) -fpic -DCOMPILE_DL_FIRST_MODULE=1 $(INCLUDE) -c first_module.c
clean:
rm -fr *.so *.o
install: first_module.so
cp -fp first_module.so $(PHP_EXT_HOME)
这将创建一个可动态加载的Extension模块,如果想将Extension静态编译进PHP,就需要使用PHP本身的编译系统,这里不作介绍。
另外,Zend提供了一个小脚本来简化创建和编译Extension的过程,可以在《PHP手册》的相关章节找到其使用方法。
目前,Zend正在开发一个更加完善和标准的Extension生成工具,可以在这里找到它:http://pecl.php.net/package/PECL_Gen
下载专辑
PHP内核介绍及扩展开发指南.doc
编写 PHP Extension
zhangdongjin@baidu.com