扣丁学堂PHP培训之PHP7扩展开发方法详解

2018-01-25 13:58:05 620浏览

今天扣丁学堂给大家介绍一下关于从零开始创建一个PHP扩展,开发环境为php7,实现一个自定义函数say_hi,调用此函数返回HelloWorld。下面我们一起来看一下吧。



一生成代码

PHP提供了生成基本代码的工具ext_skel,这个工具在PHP源代码的./ext目录下

$cdphp_src/ext/

$./ext_skel--extname=say_hi

extname参数的值就是扩展名称,执行ext_skel命令后,会在当前目录下会生成一个与扩展名一样的目录。

二修改config.m4配置文件

config.m4的作用是配合phpize工具生成configure文件(onfigure文件是用于检测扩展编译运行所需的环境是否满足),现在开始修改config.m4文件

$cd./say_hi

$vim./config.m4

config.m4文件有这样一段文字

dnlIfyourextensionreferencessomethingexternal,usewith:

dnlPHP_ARG_WITH(say,forsaysupport,

dnlMakesurethatthecommentisaligned:

dnl[--with-sayIncludesaysupport])

dnlOtherwiseuseenable:

dnlPHP_ARG_ENABLE(say,whethertoenablesaysupport,

dnlMakesurethatthecommentisaligned:

dnl[--enable-sayEnablesaysupport])

其中,dnl是注释符号,上面的代码意思是如果你所编写的扩展依赖其它的扩展或者lib库,需要去掉PHP_ARG_WITH相关代码的注释。否则,去掉PHP_ARG_ENABLE相关代码段的注释。我们编写的扩展不需要依赖其他的扩展和lib库。因此,我们去掉PHP_ARG_ENABLE前面的注释。去掉注释后的代码如下:

dnlIfyourextensionreferencessomethingexternal,usewith:

dnlPHP_ARG_WITH(say,forsaysupport,

dnlMakesurethatthecommentisaligned:

dnl[--with-sayIncludesaysupport])

dnlOtherwiseuseenable:

PHP_ARG_ENABLE(say,whethertoenablesaysupport,

Makesurethatthecommentisaligned:

[--enable-sayEnablesaysupport])

三实现扩展方法

修改say_hi.c文件来实现say_hi方法,找到PHP_FUNCTION(confirm_say_hi_compiled),在其上面增加如下代码:

PHP_FUNCTION(say_hi)

{

zend_string*strg;

strg=strpprintf(0,"HelloWorld");

RETURN_STR(strg);

}

找到PHP_FE(confirm_say_hi_compiled,NULL),在上面增加如下代码:

PHP_FE(say_hi,NULL)

修改后的代码如下:

constzend_function_entrysay_functions[]={

PHP_FE(say_hi,NULL)

PHP_FE(confirm_say_hi_compiled,NULL)/*Fortesting,removelater.*/

PHP_FE_END/*Mustbethelastlineinsay_functions[]*/

};

/*}}}*/

四编译安装写好的扩展

$phpize

$./configure

$make&&makeinstall

修改php.ini文件,增加如下代码:

extension=say_hi.so

然后执行php-m命令查看已安装扩展,在输出的内容中如果有say_hi则说明安装成功

五测试

写一个脚本test.php,假如放在home目录,内容如下:

echosay_hi();

然后执行:

php~/test.php

输出HelloWorld,扩展编写成功

以上就是关于扣丁学堂PHP培训之PHP7扩展开发方法的详细介绍,最后想要了解更多关于PHP开发发展前景趋势,请关注扣丁学堂官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的PHP视频教程系统,通过千锋扣丁学堂金牌讲师在线录制的一套PHP视频教程课程,让你快速掌握PHP从入门到精通开发实战技能。扣丁学堂PHP技术交流群:374332265。



扣丁学堂微信公众号



关注微信公众号获取更多学习资料



查看更多关于“php培训资讯的相关文章>>

标签: PHP培训 PHP视频教程 PHP从入门到精通 PHP学习路线图 PHP开发工程师

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号