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