国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP擴(kuò)展開發(fā)系列02 - 老司機(jī)起步之函數(shù)

cloud / 480人閱讀

摘要:上一篇擴(kuò)展開發(fā)引導(dǎo)文章中。這篇文章就開始介紹使用工具來生成擴(kuò)展項目文件注意這里的本身沒有這玩意,是我給自帶的起的別名這個工具就是還有點迷惑那不廢話了。至于其他參數(shù)自行了解。發(fā)現(xiàn)也是有這三個文件的。所以,不要質(zhì)疑自己。

上一篇擴(kuò)展開發(fā)引導(dǎo)文章中。創(chuàng)建了編寫擴(kuò)展的三個基本文件。或許你會有個疑問
PHP沒有類似的自動生成項目框架的工具嗎? 當(dāng)然有。
這篇文章就開始介紹使用 "php-ext-cli" 工具來生成擴(kuò)展項目文件
注意這里的 "php-ext-cli" 本身沒有這玩意,是我給 PHP 自帶的起的別名
這個工具就是 php-src/ext/ext_skel
還有點迷惑? 那不廢話了。
順便給那個只會裝逼的司機(jī)加個功能(函數(shù)吧)

下載(領(lǐng)車)

我用的是 php 5.6.30版本
不要糾結(jié)版本,當(dāng)然也先別直接用 php7.x 版本

https://github.com/php-src/php

http://php.net/downloads.php

解壓(開門)

tar zxf php-5.6.30.tar.gz

進(jìn)入ext(上車)

cd php-src/ext/

ext目錄中內(nèi)容

目錄內(nèi)很多文件夾和文件 (車內(nèi)豪華裝飾)
需要關(guān)心的暫時有:

ext_skel

其他擴(kuò)展的文件夾

其他的先不管咯。

ext_skel 使用

./ext_skel

?  ext [PHP-5.6.30] ? ./ext_skel
./ext_skel --extname=module [--proto=file] [--stubs=file] [--xml[=file]]
           [--skel=dir] [--full-xml] [--no-help]

  --extname=module   module is the name of your extension
  --proto=file       file contains prototypes of functions to create
  --stubs=file       generate only function stubs in file
  --xml              generate xml documentation to be added to phpdoc-svn
  --skel=dir         path to the skeleton directory
  --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

還只是先關(guān)心下 --extname 參數(shù)
./ext_skel --extname=laosiji
最簡單的理解就是 生成 一個 laosiji 的擴(kuò)展項目

對比

執(zhí)行完 ./ext_skel --extname=laosiji 之后 就在 ext 目錄下生成一個 laosiji的目錄
進(jìn)去看看咯
對了 暫時沒 ext_skel 什么事了。至于其他參數(shù) 自行了解。

發(fā)現(xiàn)也是有這三個文件的。至于文件里面的內(nèi)容呢。那肯定跟上次自己寫的文件內(nèi)容不同。不然我豈不是神?
說明下,對比下我們自己寫的三個文件 與 自動生成的。

不該少的沒少

多的先不管

關(guān)鍵地方不同的沒事

其實也相同(宏、宏、宏)

我們自己寫的也能生成擴(kuò)展,也能生效。

所以,不要質(zhì)疑自己。

后面的項目結(jié)構(gòu)以自己寫的為主,也就是說不會用ext_skel的來。其實都一樣,區(qū)別在于更少
不廢話了,以上只是簡單提下 ext_skel 的使用說明

函數(shù) 定義
// 函數(shù)定義
ZEND_FUNCTION(laosiji_hello)
{
    php_printf("hello laosiji!
");
}
聲明
ZEND_FUNCTION(laosiji_hello);
使用
// functions entry 函數(shù)模塊
static zend_function_entry laosiji_functions[] = {
    ZEND_FE(laosiji_hello, NULL) // 聲明
    {NULL, NULL, NULL}           // 固定不變的 照著寫就行了
};

// module entry
zend_module_entry laosiji_module_entry = {
    // ...
    laosiji_functions,   /* Functions 載入函數(shù)模塊*/
    // ...
};
@函數(shù)別名

既然是別名就不存在定義聲明咯 只要....就行了

static zend_function_entry laosiji_functions[] = {
    ZEND_FE(laosiji_hello, NULL)                            // 聲明
    ZEND_NAMED_FE(laosiji_hi, ZEND_FN(laosiji_hello), NULL) // 函數(shù)別名 ZEND_NAMED_FE
    ZEND_FALIAS(laosiji_hehe, laosiji_hello, NULL)          // 函數(shù)別名 ZEND_FALIAS
    {NULL, NULL, NULL}                                      // 固定不變的 照著寫就行了
};
測試

完整代碼

php_laosiji.h

// 定義 擴(kuò)展相關(guān)的宏 比如版本號 擴(kuò)展名稱等等。。
#define PHP_LAOSIJI_EXTNAME "laosiji"
#define PHP_LAOSIJI_VERSION "1.0.0"

//加載config.h,如果配置了的話
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

// 加載php頭文件
// 這個 很有必要哈
#include "php.h"

// 多了個函數(shù)聲明哈
ZEND_FUNCTION(laosiji_hello);

laosiji.c

#include "php_laosiji.h"

// functions entry 函數(shù)模塊
static zend_function_entry laosiji_functions[] = {
    ZEND_FE(laosiji_hello, NULL)                            // 聲明
    ZEND_NAMED_FE(laosiji_hi, ZEND_FN(laosiji_hello), NULL) // 函數(shù)別名 ZEND_NAMED_FE
    ZEND_FALIAS(laosiji_hehe, laosiji_hello, NULL)          // 函數(shù)別名 ZEND_FALIAS
    {NULL, NULL, NULL}                                      // 固定不變的 照著寫就行了
};

// module entry
zend_module_entry laosiji_module_entry = {
#if ZEND_MODULE_API_NO >= 20010901
    STANDARD_MODULE_HEADER,
#endif
    PHP_LAOSIJI_EXTNAME, /* 擴(kuò)展名稱 */
    laosiji_functions,   /* Functions 載入函數(shù)模塊*/
    NULL,                /* MINIT */
    NULL,                /* MSHUTDOWN */
    NULL,                /* RINIT */
    NULL,                /* RSHUTDOWN */
    NULL,                /* MINFO */
#if ZEND_MODULE_API_NO >= 20010901
    PHP_LAOSIJI_VERSION, /* 擴(kuò)展版本 */
#endif
    STANDARD_MODULE_PROPERTIES};

#ifdef COMPILE_DL_LAOSIJI
ZEND_GET_MODULE(laosiji)
#endif

// 函數(shù)定義
ZEND_FUNCTION(laosiji_hello)
{
    php_printf("hello laosiji!
");
}
參考

函數(shù): https://github.com/imlaosiji/...
函數(shù)別名: https://github.com/imlaosiji/...

結(jié)束

到目前看來這個司機(jī)進(jìn)化了一點,算是有點本事(函數(shù)),也會隱藏自己(函數(shù)別名).
不過還不夠,參數(shù)?返回值?不急,休息下

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/23044.html

相關(guān)文章

  • 面向?qū)ο蠡驹瓌t(2)- 里式代換原則與依賴倒置原則

    摘要:四依賴倒置原則依賴倒置原則簡介依賴倒置原則的英文名稱是,簡稱。依賴倒置原則的表現(xiàn)其實就是面向接口編程。依賴倒置原則的優(yōu)點減少類間的耦合性,提高系統(tǒng)的穩(wěn)定性。結(jié)合里氏替換原則使用接口負(fù)責(zé)定義屬性和方法,并且聲明與其他對象的依賴關(guān)系。 面向?qū)ο蠡驹瓌t(2)- 里式代換原則與依賴倒置原則 面向?qū)ο蠡驹瓌t(1)- 單一職責(zé)原則與接口隔離原則面向?qū)ο蠡驹瓌t(2)- 里式代換原則與依賴倒置原...

    liangdas 評論0 收藏0
  • PHP擴(kuò)展開發(fā)系列01 - 我要成為一名司機(jī)

    摘要:找找出別人擴(kuò)展真么寫的。這次主要說了下寫擴(kuò)展要準(zhǔn)備的一些基本知識。比如不同編譯方式這個你看別的擴(kuò)展源碼的時候就會注意到具體作用。后面再來慢慢學(xué)習(xí)老司機(jī)的各種姿勢。包括,函數(shù),函數(shù)參數(shù),函數(shù)返回值,對象,類,命名空間等等等。 PHP擴(kuò)展開發(fā)系列01 - 我要成為一名老司機(jī) 1. 關(guān)于擴(kuò)展的教程貌似挺全了,為啥還寫? 記錄下我寫擴(kuò)展的歷程 自認(rèn)為會寫的更容易理解 我的宗旨就是 先用再識 ...

    30e8336b8229 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來學(xué)習(xí)一門新的編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗,增強了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...

    caspar 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來學(xué)習(xí)一門新的編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗,增強了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...

    nihao 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來學(xué)習(xí)一門新的編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗,增強了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...

    Drummor 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<