标梵互动
标梵互动
  • 发布:2020-11-05 11:45
  • 更新:2020-11-05 11:45
  • 阅读:606

手把手告诉你如何用扩展开发PHP7?

分类:ASK社区
PHP

本教程以PHP7为基础,说明如何从零开始扩展PHP7.3。
第一步:准备工作
1、基础环境:
PHP 7.3.19-1+ubuntu16.04.1
2、安装php开发版:
apt install php7.3.1-dev
3、下载相关事项:
①下载php源码
②linux可用命令下载
③下载源码所放目录(可自定):
/usr/local/src/
手把手告诉你如何用扩展开发PHP7?

第二步:解压源码压缩包
1、tar -zxvf php-7.3.19.tar.gz (如下载的是bz2后缀的,用tar -xjf文件名)
2、文件说明
①大致只需关注Zend和ext这两个目录;
②Zend目录里包含PHP的Zend Engine源代码;
③ext目录里包含PHP原生的扩展,以及我们开发自己的扩展时可以利用的ext_skel.php脚本工具;
④php7.3之前版本Linux下使用ext_skel,Windows下使用ext_skel_win32.php;
⑤php7.3后用ext_skel.php。
第三步:使用ext_skel.php脚本工具创建扩展骨架
cd ext
php ext_skel.php --ext helloWorld
第四步:修改config.m4文件
cd helloworld
可以看到config.m4文件,打开找到这样的代码
dnl PHP_ARG_WITH(helloworld, for helloworld support,
dnl Make sure that the comment is aligned:
dnl [ --with-helloworld Include helloworld support])
把开头的“dnl ”都去掉,改为
PHP_ARG_WITH(helloworld, for helloworld support,
Make sure that the comment is aligned:
[ --with-helloworld Include helloworld support])
备注:
①PHP_ARG_WITH和PHP_ARG_ENABLE这两个宏用来配置configure选项,一个配置需要外部依赖的,另一个配置不需要外部依赖的配置好的内容,在后面执行configure --help时可以看到;
②php_hello.h头文件类似于C语言的头文件,包含了一些自定义的结构和函数声明,在这个demo中暂时不需要改动;
③hello.c代码文件真正的逻辑代码都在这个文件中。
第五步:进行编译
1、操作
phpize
./configure
make
make install
2、编译完成后
把对应的helloworld.so添加到php.in(vim /etc/php/7.3/cli/php.ini)扩展中就能使用了:extension =helloworld.so
3、检验扩展是否安装成功
使用 php -m 查看helloworld扩展是否已经安装成功
第六步:创建HelloWorld示例
1、了解helloworld.c文件
整个扩展的入口是helloworld_module_entry
备注:
①STANDARD_MODULE_HEADER帮我们实现了前面6个属性;
②"helloworld"是扩展的名字;
③helloworld_functions是扩展包含的全部方法的集合;
④后面5个宏分别代表5个扩展特定方法;
⑤PHP_HELLO_VERSION是扩展的版本号,定义在头文件中;
⑥STANDARD_MODULE_PROPERTIES帮我们实现了剩下的属性;
⑦本次这个都不需要修改,按照这个入口添加扩展方法。
2、编写hellp_world示例
在helloworld_functions[]方法数组中已经有了两个示例方法;
helloworld_test[1|2],我们参考它写我们的方法hello_world。
先在扩展的方法数组中添加上hello_world,然后再定义hello_world;
找到helloworld_test1方法定义的地方,类似这样的再创建一个;
hello_world方法,php_printf是Zend Engine中的printf方法。
3、重新编译
phpize
./configure
make
make install
4、执行hello_world()
php -a 进入到交互模式
hello_world();
以上就是通过Linux命令行的使用和创建PHP扩展的全部内容。
本文来源:标梵互动(https://www.biaofun.com/)

0 关注 分享

要回复文章请先登录注册