PHP擴展生成工具
大家都知道,PHP底層是用C語言來實現的,有時候為了提升PHP的性能,我們通常會通過開發PHP擴展的方式實現。但是由於很多PHPer對C語言是很陌生的,所以一個良好的PHP擴展代碼生成框架對於大家來說是非常有幫助的。本文不僅要向大家介紹這樣的PHP擴展代碼生成框架,順帶也介紹一下PHP擴展的開發環境搭建和調試方法。
(一)官方代碼生成工具ext_skel
1、首先檢查本地的PHP版本,下載對應版本的PHP源碼(建議使用git倉庫的代碼,方便切換分支)。
i 檢查或者指定對應PHP版本
$php -v
或者
$/usr/local/Cellar/php@5.6/5.6.36/bin/php -v
ii下載源碼
$git clone https://git.php.net/repository/php-src.git
iii進入ext目錄,執行ext_skel命令
使用方法
開發一個新擴展時,僅需關注的參數是 --extname。"name" 是一個全為小寫字母的標識符,僅包含字母和下劃線,在 PHP 發行包的 ext/ 文件夾下是唯一的。
--proto 選項允許開發人員指定一個頭文件。
--xml 和 --full-xml 選項當前完全不起作用。
--skel 選項可用於指定用一套修改過的框架文件來工作。
具體示例
至此為止,PHP擴展的基本框架代碼全部生成。但是這只是及其簡單的一個框架雛形,如果要開發實際可用的功能,可以借鑒ext目錄下已有的擴展代碼。另外,對於新手來說,推薦使用韓天峰的PHP-X來進行擴展開發(教程:https://segmentfault.com/a/1190000011111074)。
(二)PHP擴展開發環境搭建
i使用Qt Creator
Qt Creator的最大優點是啟動快,使用便捷,非常適合初學者。
準備:下載Qt Creator開源版(這裡以Mac版本為例)
wget //iso.mirrors.ustc.edu.cn/qtproject/official_releases/qtcreator/4.6/4.6.1/qt-creator-opensource-mac-x86_64-4.6.1.dmg
第一步:導入項目
第二步:設置編譯、運行腳本
第三步:編譯、執行
ii使用CLion
CLion是JetBrains出品,必屬精品!!!
準備:下載CLion(這裡以Mac版本為例)
wget https://download.jetbrains.8686c.com/cpp/CLion-2018.1.3.dmg
第一步:導入項目
這裡只需要導入擴展的源碼,即/Users/chelun/packages/php-src/ext/wirror
配置CMakeLists.txt, 將需要引用的頭文件路徑都包含進來
第二步:配置編譯運行參數
注意配置項與CMakeLists.txt中定義的對應關係
第三步:編譯、運行和調試
iii使用VSCode
vscode是一個非常輕量級的編輯器,微軟的良心之作,安裝c/c++插件開發和調試PHP的內核或者擴展非常的方便。
準備:從官方(https://code.visualstudio.com/)下載vscode
第一步:導入項目
第二步:安裝c/c++插件,配置lanunch.json和tasks.json
在.idea目錄下新建lanunch.json和tasks.json,並配置如下:
第三步:編譯、運行和調試
iv使用Eclipse CDT
很經典也很適用的C/C++開發IDE,基於Eclipse。具體安裝使用方法就不在這裡詳細介紹了。
(三)PHP擴展調試
i使用gdb進行本地調試
第一步:準備工作
修改config.mp4, 打開debug選項(去掉以下配置的前面的dnl注釋)
iftest -z"$PHP_DEBUG";thenAC_ARG_ENABLE(debug, [--enable-debg compile with debugging system], [PHP_DEBUG=$enableval], [PHP_DEBUG=no] )fi
執行configure的時候,加上debug配置項
./configure--enable-debug
第二步:使用gdb調試
查找符號表:
$nm /usr/local/Cellar/php@5.6/5.6.36/pecl/20131226/wirror.so | grep wirror_array_max
執行結果:0000000000000e40 T _zif_wirror_array_max
進入調試模式:
$gdb /usr/local/opt/php@5.6/bin/php
根據目標函數,設置斷點:
>break zif_wirror_array_max
ii使用IDE自帶調試功能
上述幾款IDE都自帶調試功能,這裡就不一一介紹了。
TAG:WCF代碼工廠 |