摘要:什么是擴展生成器每個擴展都包含一些非常公共的并且非常單調(diào)的結(jié)構(gòu)和文件,這些文件對所有擴展來說都是通用的。擴展生成器就是實現(xiàn)這些功能的腳本,幫助我們完成初始化工作。源碼中提供一個自帶的生成器。
什么是擴展生成器
每個php擴展都包含一些非常公共的并且非常單調(diào)的結(jié)構(gòu)和文件,這些文件對所有擴展來說都是通用的。當(dāng)開始一個新擴展開發(fā)的時候,如果這些公共的結(jié)構(gòu)已經(jīng)存在,而不需要費力去復(fù)制每個文件的內(nèi)容, 我們只需考慮填充功能代碼那心情一定會愉快很多。
擴展生成器就是實現(xiàn)這些功能的腳本,幫助我們完成初始化工作。 PHP 源碼中提供一個自帶的生成器 ext_skel。他在 ext 目錄下。
ext_skel
它是一個 shell 腳本,僅有 300 多行。我們來看下關(guān)鍵部分代碼
# 生成 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
它提示了我們腳本的命令行格式和支持的參數(shù)
./ext_skel --extname=module [--proto=file] [--stubs=file] [--xml[=file]] [--skel=dir] [--full-xml] [--no-help] --extname=module 擴展名稱,全為小寫字母的標(biāo)識符,僅包含字母和下劃線,保證在 php 源碼 ext 目錄下的文件夾名唯一 --proto=file 允許開發(fā)人員指定一個頭文件,由此創(chuàng)建一系列 PHP 函數(shù),表面上看就是要開發(fā)基于一個函數(shù)庫的擴展,很少用 --stubs=file 僅生成文件中的函數(shù)存根,生成 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 去除生成測試函數(shù)和注釋等內(nèi)容,除非你很熟練,不建議操作
示例
/usr/local/src/php-7.2.15/ext/ext_skel --extname=twinkle_log --skel=/usr/local/src/php-7.2.15/ext/skeleton/
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/30947.html
摘要:自動代碼擴展開發(fā)時遵守的代碼風(fēng)格是項目開發(fā)規(guī)范。遵照此規(guī)范,在實際操作中,有許多重復(fù),接下來推薦一款專為此規(guī)范量身定制的代碼生成器??梢岳么藬U展來快速構(gòu)建項目原型。后續(xù)還會為大家?guī)硪恍┳钚碌募夹g(shù)擴展。 whoops 錯誤提示擴展 whoops 是一個非常優(yōu)秀的 PHP Debug 擴展,它能夠使你在開發(fā)中快速定位出錯的位置。laravel默認安裝。showImg(https://s...
摘要:自動代碼擴展開發(fā)時遵守的代碼風(fēng)格是項目開發(fā)規(guī)范。遵照此規(guī)范,在實際操作中,有許多重復(fù),接下來推薦一款專為此規(guī)范量身定制的代碼生成器??梢岳么藬U展來快速構(gòu)建項目原型。后續(xù)還會為大家?guī)硪恍┳钚碌募夹g(shù)擴展。 whoops 錯誤提示擴展 whoops 是一個非常優(yōu)秀的 PHP Debug 擴展,它能夠使你在開發(fā)中快速定位出錯的位置。laravel默認安裝。showImg(https://s...
摘要:擴展開發(fā)第一個擴展擴展開發(fā)安裝定時器在上一篇文章擴展開發(fā)安裝我們已經(jīng)將開發(fā)擴展的環(huán)境安裝成功,那么接下來采用最簡單直接的方式創(chuàng)建第一個擴展。 PHP擴展開發(fā):第一個擴展 《PHP擴展開發(fā):安裝PHP》《POSIX定時器:timer_settime() 》在上一篇文章《PHP擴展開發(fā):安裝PHP》我們已經(jīng)將開發(fā)PHP擴展的PHP環(huán)境安裝成功,那么接下來采用最簡單直接的方式創(chuàng)建第一個擴展。...
摘要:四使用語言開發(fā)是我重點推薦的擴展開發(fā)框架,簡明易懂,功能強大,開發(fā)效率高,代碼易維護,執(zhí)行速度快。優(yōu)點三支持,的擴展開發(fā)有兩套擴展開發(fā)框架,分別支持,,雖然框架代碼有兩個,但是接口卻是一樣的。 PHP擴展是高級PHP程序員必須了解的技能之一,對于一個初入門的PHP擴展開發(fā)者,怎么才能開發(fā)一個成熟的擴展,進入PHP開發(fā)的高級領(lǐng)域呢?本系列開發(fā)教程將手把手帶您從入門進入高級階段。本教程系列...
閱讀 1204·2021-11-15 18:00
閱讀 1799·2021-10-08 10:15
閱讀 763·2021-09-04 16:48
閱讀 2389·2021-09-04 16:48
閱讀 1322·2019-08-29 18:40
閱讀 976·2019-08-29 13:08
閱讀 2997·2019-08-26 14:06
閱讀 1119·2019-08-26 13:35