php开发一个自己的扩展
进入到源码目录,比如 进入扩展目录:cd php-7.4.33-src/ext/
执行./ext_skel --extname=module 选项,解释说明了module为扩展名称,现在我们执行 ./ext_skel --extname=test_add。这里的test_ddd就是我们的扩展名字
执行完./ext_skel --extname=test_add后,在我门的目录下生成了一个test_add的文件夹,这个文件夹中的各种文件就是我们php的扩展框架
这里我着重介绍几个文件,首先是config.m4,这个文件是用来生成configure脚本、Makefile等文件。还有是test_add.c这个就是我们扩展的主文件,在里面可以写一些我们的业务代码。php_test_add.h这个一看就是头文件,里面主要定义了一些宏,方便我们扩展的开发。
今天我们要用的主要有一个宏PHP_FUNCTION,还有test_add_functions。其他的宏后面有机会在和大家聊。因为我们今天的主要目的是写几个扩展函数,让跑起来。PHP_FUNCTION宏:我们可以把我们要定义的函数名字作为参数然后写入这个宏中,如:
在上图中我把之前默认的函数名字改为了test_add_1后又新增了一个函数test_add_2。然后我们会在PHP_FUNCTION(test_add_2)中把这个函数完善一下(这个函数的主要功能是让两个数相加然后把结果返回给用户,就这么简单)
1-1)首先我们定义两个长整型:long a, b;
1-2)然后通过:zend_parse_parameters函数接收他们
1-3)定义一个long c,然后让a, b相加赋值给c
1-4)输出c
2)test_add_functions:
我们在它的上面可以看到一句话:Every user visible function must have an entry in test_add_functions[]. 也就是说我们在上面创建了函数还不能让客户端PHP使用必须在PHP_FE这个宏里指定了才可以
编译安装,在编译之前我们需要生成一下Makefile等文件,下来执行:phpize,这时候我们的扩展目录下会多出好多文件,其中就有configure,好的我们执行./configure,最后我们再执行:make && make install。
最后我们再php.ini中配置我们的扩展 最后一行添加:extension = test_add.so
我们执行php -m会看到刚才我们编写的扩展