pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

PHP7擴展開發之hello word實現方法詳解

這篇文章主要介紹了PHP7擴展開發之hello word實現方法,結合實例形式分析了php7擴展開發的具體步驟與相關操作技巧,涉及針對php底層源碼的修改與編譯,需要的朋友可以參考下

本文實例講述了PHP7擴展開發之hello word實現方法。分享給大家供大家參考,具體如下:

這里是以PHP7作為基礎,講解如何從零開始創建一個PHP擴展。本文主要講解創建一個擴展的基本步驟都有哪些。示例中,我們將實現如下功能:


<?php
echo say();
?>

輸出內容:


$ php ./test.php
$ hello word

在擴展中實現一個say方法,調用say方法后,輸出 hello word。

第一步:生成代碼

PHP為我們提供了生成基本代碼的工具 ext_skel。這個工具在PHP源代碼的./ext目錄下。


$ cd php_src/ext/
$ ./ext_skel --extname=say

extname參數的值就是擴展名稱。執行ext_skel命令后,這樣在當前目錄下會生成一個與擴展名一樣的目錄。

第二步,修改config.m4配置文件

config.m4的作用就是配合phpize工具生成configure文件。configure文件是用于環境檢測的。檢測擴展編譯運行所需的環境是否滿足。現在我們開始修改config.m4文件。


$ cd ./say
$ vim ./config.m4

打開,config.m4文件后,你會發現這樣一段文字。


dnl If your extension references something external, use with:
dnl PHP_ARG_WITH(say, for say support,
dnl Make sure that the comment is aligned:
dnl [ --with-say       Include say support])
dnl Otherwise use enable:
dnl PHP_ARG_ENABLE(say, whether to enable say support,
dnl Make sure that the comment is aligned:
dnl [ --enable-say      Enable say support])

其中,dnl 是注釋符號。上面的代碼說,如果你所編寫的擴展如果依賴其它的擴展或者lib庫,需要去掉PHP_ARG_WITH相關代碼的注釋。否則,去掉 PHP_ARG_ENABLE 相關代碼段的注釋。我們編寫的擴展不需要依賴其他的擴展和lib庫。因此,我們去掉PHP_ARG_ENABLE前面的注釋。去掉注釋后的代碼如下:


dnl If your extension references something external, use with:
 dnl PHP_ARG_WITH(say, for say support,
 dnl Make sure that the comment is aligned:
 dnl [ --with-say       Include say support])
 dnl Otherwise use enable:
 PHP_ARG_ENABLE(say, whether to enable say support,
 Make sure that the comment is aligned:
 [ --enable-say      Enable say support])

第三步,代碼實現

修改say.c文件。實現say方法。
找到PHP_FUNCTION(confirm_say_compiled),在其上面增加如下代碼:


PHP_FUNCTION(say)
{
    zend_string *strg;
    strg = strpprintf(0, "hello word");
    RETURN_STR(strg);
}

找到 PHP_FE(confirm_say_compiled, 在上面增加如下代碼:


PHP_FE(say, NULL)

修改后的代碼如下:


const zend_function_entry say_functions[] = {
   PHP_FE(say, NULL)    /* For testing, remove later. */
   PHP_FE(confirm_say_compiled,  NULL)    /* For testing, remove later. */
   PHP_FE_END /* Must be the last line in say_functions[] */
 };
 /* }}} */

第四步,編譯安裝

編譯擴展的步驟如下:


$ phpize
$ ./configure
$ make && make install

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


[say]
extension = say.so

然后執行,php -m 命令。在輸出的內容中,你會看到say字樣。

第五步,調用測試

自己寫一個腳本,調用say方法。看輸出的內容是否符合預期。

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP擴展開發教程》、《php面向對象程序設計入門教程》、《php+mysql數據庫操作入門教程》、《PHP網絡編程技巧總結》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

這篇文章主要介紹了PHP7擴展開發之基于函數方式使用lib庫的方法,結合實例形式分析了PHP7中lib庫擴展的封裝與調用相關操作技巧,需要的朋友可以參考下
主站蜘蛛池模板: 企业微信营销_企业微信服务商_私域流量运营_艾客SCRM官网 | 耐酸碱泵-自吸耐酸碱泵型号「品牌厂家」立式耐酸碱泵价格-昆山国宝过滤机有限公司首页 | 微波萃取合成仪-电热消解器价格-北京安合美诚科学仪器有限公司 | 咖啡加盟-咖啡店加盟-咖啡西餐厅加盟-塞纳左岸咖啡西餐厅官网 | 布袋除尘器-单机除尘器-脉冲除尘器-泊头市兴天环保设备有限公司 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 济南冷库安装-山东冷库设计|建造|冷库维修-山东齐雪制冷设备有限公司 | 吲哚菁绿衍生物-酶底物法大肠菌群检测试剂-北京和信同通科技发展有限公司 | 家德利门业,家居安全门,别墅大门 - 安徽家德利门业有限公司 | 重庆中专|职高|技校招生-重庆中专招生网 | 木材烘干机,木炭烘干机,纸管/佛香烘干设备-河南蓝天机械制造有限公司 | 谷歌关键词优化-外贸网站优化-Google SEO小语种推广-思亿欧外贸快车 | 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 南方珠江-南方一线电缆-南方珠江科技电缆-南方珠江科技有限公司 南汇8424西瓜_南汇玉菇甜瓜-南汇水蜜桃价格 | 仪器仪表网 - 永久免费的b2b电子商务平台| 东莞办公家具厂家直销-美鑫【免费3D效果图】全国办公桌/会议桌定制 | 浇注料-高铝砖耐火砖-郑州凯瑞得窑炉耐火材料有限公司 | 最新电影-好看的电视剧大全-朝夕电影网| 基本型顶空进样器-全自动热脱附解吸仪价格-AutoHS全模式-成都科林分析技术有限公司 | BESWICK球阀,BESWICK接头,BURKERT膜片阀,美国SEL继电器-东莞市广联自动化科技有限公司 | 亮化工程,亮化设计,城市亮化工程,亮化资质合作,长沙亮化照明,杰奥思【官网】 | 无压烧结银_有压烧结银_导电银胶_导电油墨_导电胶-善仁(浙江)新材料 | 济南网站建设_济南网站制作_济南网站设计_济南网站建设公司_富库网络旗下模易宝_模板建站 | 电竞学校_电子竞技培训学校学院-梦竞未来电竞学校官网 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 球形钽粉_球形钨粉_纳米粉末_难熔金属粉末-广东银纳官网 | 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | 铝镁锰板_铝镁锰合金板_铝镁锰板厂家_铝镁锰金属屋面板_安徽建科 | 基业箱_环网柜_配电柜厂家_开关柜厂家_开关断路器-东莞基业电气设备有限公司 | 华东师范大学在职研究生招生网_在职研究生招生联展网 | 微学堂-电动能源汽车评测_电动车性能分享网 | 法钢特种钢材(上海)有限公司 - 耐磨钢板、高强度钢板销售加工 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | 西门子气候补偿器,锅炉气候补偿器-陕西沃信机电工程有限公司 | 上海小程序开发-上海小程序制作公司-上海网站建设-公众号开发运营-软件外包公司-咏熠科技 | 专业生产动态配料系统_饲料配料系统_化肥配料系统等配料系统-郑州鑫晟重工机械有限公司 | 胀套-锁紧盘-风电锁紧盘-蛇形联轴器「厂家」-瑞安市宝德隆机械配件有限公司 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 济南拼接屏_山东液晶拼接屏_济南LED显示屏—维康国际官网 | EFM 022静电场测试仪-套帽式风量计-静电平板监测器-上海民仪电子有限公司 | 电动葫芦|防爆钢丝绳电动葫芦|手拉葫芦-保定大力起重葫芦有限公司 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 |