扩展开发文档:https://www.kancloud.cn/nickbai/php7/363309
简介
本扩展是基于原文档链接的一个简略上手操作说明,同时也发现原文档说明与实际操作有出入的地方。
环境
以下是笔者编写测试扩展的开发环境
- MAC
- PHP version 7.3.4
PHP源码
可以先从github仓库下载PHP源代码库(对应PHP版本分支),并解压。
生成扩展骨架
进入源码/ext目录,可以找到ext_skel.php脚本,通过此脚本可以生成扩展的基本构架,,帮助开发者快速生成一个规范的扩展结构。以下为示例命令:
php ext_skel.php --ext 扩展名称 --dir 扩展代码目录
执行完以后会在ext目录下新生成一个扩展目录,比如–ext是myfunc,则将生成以下文件:
|---myfunc
| |---config.m4 //autoconf规则的编译配置文件
| |---config.w32 //windows环境的配置
| |---myfunc.c //扩展源码
| |---php_myfunc.h //头文件
| |---tests //测试用例,执行make test时将执行、验证这些用例
| |---001.phpt
| |---002.phpt
| |---003.phpt
这个脚本主要生成了编译需要的配置以及扩展的基本结构,初步生成的这个扩展可以成功的编译、安装、使用,实际开发中我们可以使用这个脚本生成一个基本结构,然后根据具体的需要逐步完善。
配置
1.用phpize创建配置,需要先进入到扩展代码目录
/path/to/phpize
./configure --with-php-config=/path/to/php-config
2.编译
make
make test
make install clean
3.在/usr/local/Cellar/php/7.3.4/pecl/20180731/会出现一个myfunc.so的文件,表示扩展已编译成功。
安装
找到php.ini配置加入如下配置:
extension=myfunc.so
在php-cli模式下可以直接测试扩展,php-fpm模式需要重启php-fpm。