首先很重要的一句话
PHP+C/C++,基本上你可以做任何事情。完全不需要学习其他编程语言了。
以前我是比较不喜欢C++的,因为自己懒,C++太复杂,不好学。
但是现在学习写PHP扩展的话,就必须要学C++了。
写PHP扩展的话,首先需要这几个东西autoconf / gcc / make / php5 / php5-dev
当然linux我选择的是ubuntu,只需要输入 sudo apt-get install gcc make autoconf 检查下是否安装了 这三个插件。
一般如果是最新的ubuntu的话都会自带最新版本的这些插件。
然后,需要下载一个php5.X的版本,下载完之后,cd 到 ext目录下
发现有一个
ext_skel 的 扩展程序。这个程序就是我们后来要生成扩展的重要程序。
然后我们执行 ext_skel 他给出了用法
我们需要的是输入 ext_skel --extname=模块名
输入完成后,会在ext文件夹下生成一个模块名的文件夹,我们cd进去
然后我们vi config.m4 这个就是生成模块的配置文件
dnl代表注释,我们把红色方框中的注释取消掉,然后 保存 退出
然后我们用phpzip 打包进行检查,在用configure 命令 在该目录下生成了一个 makefile文件 这是一个make 的配置文件 实现C源文件的编译
我们在输入make命令
这样编译就成功了,然后我们看到test.c里面自动生成了这个PHP_FUNCTION这个函数
那好,如何测试这个扩展呢?我们先修改php.ini文件,我们可以通过php -i | grep php.ini 查找到ini 目录
然后增加一行 extension=test.so
然后php -m 发现存在这个模块了
然后你在cd到原来test的文件夹下,用php test.php可以测试模块是否安装成功!
这样 自己生成的模块就安装成功了!
然后到后面,这只是一个测试的默认用例。
我们可以看到在该模块的目录下有一个,test.h和test.c的两个文件,一个是头文件,一个是源代码文件
然后我们打开test.h文件
假如我们需要添加一个函数为test_hello的话,那么在头文件那必须添加函数声明
然后打开test.c源代码文件,将这个函数写入该文件
然后,在再zend_function_entry下添加该函数
修改完成之后,我们执行sudo make install操作。
操作完成之后,我们用 php --rf 'test_hello' 这个命令检查是否存在。
检查之后
发现了这个函数,所以第一次试验这个已经圆满成功了!