摘要:什么是擴展生成器每個擴展都包含一些非常公共的并且非常單調的結構和文件,這些文件對所有擴展來說都是通用的。擴展生成器就是實現這些功能的腳本,幫助我們完成初始化工作。源碼中提供一個自帶的生成器。
什么是擴展生成器
每個php擴展都包含一些非常公共的并且非常單調的結構和文件,這些文件對所有擴展來說都是通用的。當開始一個新擴展開發的時候,如果這些公共的結構已經存在,而不需要費力去復制每個文件的內容, 我們只需考慮填充功能代碼那心情一定會愉快很多。
擴展生成器就是實現這些功能的腳本,幫助我們完成初始化工作。 PHP 源碼中提供一個自帶的生成器 ext_skel。他在 ext 目錄下。
ext_skel
它是一個 shell 腳本,僅有 300 多行。我們來看下關鍵部分代碼
# 生成 config.m4 配置文件 cat >config.m4 <sedscript echo "s/EXTNAME/$EXTNAME/g" >> sedscript echo "/__function_entries_here__/r function_entries" >> sedscript echo "/__function_stubs_here__/r function_stubs" >> sedscript echo "/__header_here__/r ../../header" >> sedscript echo "/__footer_here__/r ../../footer" >> sedscript echo "/__function_entries_here__/D" >> sedscript echo "/__function_stubs_here__/D" >> sedscript echo "/__header_here__/D" >> sedscript echo "/__footer_here__/D" >> sedscript if [ ! -z "$no_help" ]; then echo "/confirm_$extname_compiled/D" >> sedscript echo "/Remove the following/,/^*//D" >> sedscript echo "s/[[:space:]]/*.+*///" >> sedscript echo "s/^/*.**/$//" >> sedscript echo "/^[[:space:]]*/*/,/^[[:space:]]**//D" >> sedscript fi sed -f sedscript < $skel_dir/skeleton.c > $extname.c
幫助說明
./ext_skel --help
它提示了我們腳本的命令行格式和支持的參數
./ext_skel --extname=module [--proto=file] [--stubs=file] [--xml[=file]] [--skel=dir] [--full-xml] [--no-help] --extname=module 擴展名稱,全為小寫字母的標識符,僅包含字母和下劃線,保證在 php 源碼 ext 目錄下的文件夾名唯一 --proto=file 允許開發人員指定一個頭文件,由此創建一系列 PHP 函數,表面上看就是要開發基于一個函數庫的擴展,很少用 --stubs=file 僅生成文件中的函數存根,生成 IDE 提示文件可能有用 --xml generate xml documentation to be added to phpdoc-svn 沒用 --skel=dir path to the skeleton directory 指定擴展骨架目錄,如果你想在 ext 目錄以外的地方生成,那這個有用 --full-xml generate xml documentation for a self-contained extension (not yet implemented) 沒用 --no-help don"t try to be nice and create comments in the code and helper functions to test if the module compiled 去除生成測試函數和注釋等內容,除非你很熟練,不建議操作
示例
/usr/local/src/php-7.2.15/ext/ext_skel --extname=twinkle_log --skel=/usr/local/src/php-7.2.15/ext/skeleton/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30947.html
摘要:自動代碼擴展開發時遵守的代碼風格是項目開發規范。遵照此規范,在實際操作中,有許多重復,接下來推薦一款專為此規范量身定制的代碼生成器??梢岳么藬U展來快速構建項目原型。后續還會為大家帶來一些最新的技術擴展。 whoops 錯誤提示擴展 whoops 是一個非常優秀的 PHP Debug 擴展,它能夠使你在開發中快速定位出錯的位置。laravel默認安裝。showImg(https://s...
摘要:自動代碼擴展開發時遵守的代碼風格是項目開發規范。遵照此規范,在實際操作中,有許多重復,接下來推薦一款專為此規范量身定制的代碼生成器??梢岳么藬U展來快速構建項目原型。后續還會為大家帶來一些最新的技術擴展。 whoops 錯誤提示擴展 whoops 是一個非常優秀的 PHP Debug 擴展,它能夠使你在開發中快速定位出錯的位置。laravel默認安裝。showImg(https://s...
摘要:擴展開發第一個擴展擴展開發安裝定時器在上一篇文章擴展開發安裝我們已經將開發擴展的環境安裝成功,那么接下來采用最簡單直接的方式創建第一個擴展。 PHP擴展開發:第一個擴展 《PHP擴展開發:安裝PHP》《POSIX定時器:timer_settime() 》在上一篇文章《PHP擴展開發:安裝PHP》我們已經將開發PHP擴展的PHP環境安裝成功,那么接下來采用最簡單直接的方式創建第一個擴展。...
摘要:四使用語言開發是我重點推薦的擴展開發框架,簡明易懂,功能強大,開發效率高,代碼易維護,執行速度快。優點三支持,的擴展開發有兩套擴展開發框架,分別支持,,雖然框架代碼有兩個,但是接口卻是一樣的。 PHP擴展是高級PHP程序員必須了解的技能之一,對于一個初入門的PHP擴展開發者,怎么才能開發一個成熟的擴展,進入PHP開發的高級領域呢?本系列開發教程將手把手帶您從入門進入高級階段。本教程系列...
閱讀 1193·2021-11-15 18:00
閱讀 1789·2021-10-08 10:15
閱讀 752·2021-09-04 16:48
閱讀 2373·2021-09-04 16:48
閱讀 1313·2019-08-29 18:40
閱讀 964·2019-08-29 13:08
閱讀 2987·2019-08-26 14:06
閱讀 1109·2019-08-26 13:35