专栏中心

EEPW首页 > 专栏 > PHP7扩展开发方法详解

PHP7扩展开发方法详解

发布人:only1 时间:2020-10-10 来源:工程师 发布文章

  今天扣丁学堂给大家介绍一下关于从零开始创建一个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。

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

鸿海第四代半导体研究取得大突破

LabVIEW网络讲坛第三季——第十期:事件结构的妙用

视频 2009-06-09

DP-51单片机下载仿真实验仪在使用过程中常见故障诊断

韩国宣布逾1700亿元半导体产业扶持计划

美国要全面禁用DeepSeek、不准本国厂商向其供应芯片

智能计算 2025-04-18

LabVIEW网络讲坛第三季——第九期:子面板技术探究

视频 2009-06-09

魏哲家打脸「台积电合资英特尔」传闻! 霸气回应关税议题

EDA/PCB 2025-04-18

LabVIEW网络讲坛第三季——第八期:生产者/消费者循环(下)

视频 2009-06-09

HBM4标准,正式发布

网络与存储 2025-04-18

瑞士工业巨头ABB拟分拆机器人业务独立上市,市场份额全球第二

LabVIEW网络讲坛第三季——第六期:生产者/消费者循环(上)

视频 2009-06-09

从本土突围到全球布局,瑞能半导体携创新方案亮相2025慕尼黑上海电子展

2025-04-18

英特尔德国马格德堡晶圆厂项目推迟,相关用地回归农耕用途

EDA/PCB 2025-04-18

LabVIEW网络讲坛第三季——第七期:生产者/消费者循环(中)

视频 2009-06-09

DP-51程序下载软件

资源下载 2007-03-30

DP-51实验仪程序下载软件DPFlash V1.2 (英)

TrendForce:预估2Q25存储器合约价涨幅将扩大

台积电法说会7大重点:关税冲击、AI市场需求

更多 培训课堂
更多 焦点
更多 视频

技术专区