當前位置:
首頁 > 最新 > PHP擴展生成工具

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都自帶調試功能,這裡就不一一介紹了。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 WCF代碼工廠 的精彩文章:

React代碼生成器

TAG:WCF代碼工廠 |