成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

C++ 開(kāi)發(fā) PHP 7 擴(kuò)展之原生常量定義

zilu / 1904人閱讀

摘要:大家如果經(jīng)常閱讀官方手冊(cè)的話會(huì)發(fā)現(xiàn),在擴(kuò)展那一章里面的每個(gè)擴(kuò)展的介紹的時(shí)候,都有一節(jié)是預(yù)定義常量,這些常量是不需要您在里面進(jìn)行定義就可以使用的。比如擴(kuò)展的那么我們必須也在我們擴(kuò)展中也定義幾個(gè)常量玩玩啊,其實(shí)真的很簡(jiǎn)單,不信那咱們走著看。

大家如果經(jīng)常閱讀 PHP 官方手冊(cè)的話會(huì)發(fā)現(xiàn),在擴(kuò)展那一章里面的每個(gè)擴(kuò)展的介紹的時(shí)候,都有一節(jié)是 Predefined Constants 預(yù)定義常量,這些常量是不需要您在 PHP 里面進(jìn)行定義就可以使用的。

比如 Mysqli 擴(kuò)展的 Predefined Constants http://php.net/manual/en/mysqli.constants.php

那么我們必須也在我們 hellozapi 擴(kuò)展中也定義幾個(gè)常量玩玩啊,其實(shí)真的很簡(jiǎn)單,不信?那咱們走著看。

回到我們上節(jié)介紹的定義項(xiàng)目入口代碼:

#include "zapi/ZendApi.h"

extern "C" {

ZAPI_DECL_EXPORT void *get_module() 
{
   static zapi::lang::Extension hellozapi("hellozapi", "1.0");
   return hellozapi;
}

}

咱們定義如下幾個(gè)常量:(不要太糾結(jié)實(shí)際意義,哈哈,本身我們的這個(gè)擴(kuò)展都是臆想出來(lái)的)

HELLO_ZAPI_VERSION (int)

HELLO_ZAPI_NAME (string)

HELLO_DEBUG_MODE (bool)

HELLO_ZAPI_PI (double)

zendAPI 常量描述類簡(jiǎn)單介紹

zendAPI 里面我們使用 zapi::lang::Constant 來(lái)描述一個(gè)常量的元信息,使用起來(lái)很簡(jiǎn)單,他的構(gòu)造函數(shù)接受兩個(gè)參數(shù),第一個(gè)參數(shù)是常量名稱,第二個(gè)參數(shù)是常量的值。例如我們使用下面代碼去定義一個(gè) ROOT_DIR 常量, 常量值是 /srv/www。

using zapi::lang::Constant;
Constant dirConst("ROOT_DIR", "/srv/www");

zapi::lang::Constant API 手冊(cè)參考

現(xiàn)在大家學(xué)習(xí)完背景知識(shí),讓我們擼起袖子寫(xiě)代碼吧。

C++ Code
#include "zapi/ZendApi.h"

?using zapi::lang::Constant;

extern "C" {

ZAPI_DECL_EXPORT void *get_module() 
{
   static zapi::lang::Extension hellozapi("hellozapi", "1.0");
   ?Constant hellozapiVersionConst("HELLO_ZAPI_VERSION", 0x010002);
   Constant hellozapiNameConst("HELLO_ZAPI_NAME", "Hello zendAPI!");
   Constant helloDebugModeConst("HELLO_DEBUG_MODE", true);
   Constant helloPiConst("HELLO_ZAPI_PI", 3.14);
   hellozapi.registerConstant(std::move(hellozapiVersionConst));
   hellozapi.registerConstant(std::move(hellozapiNameConst));
   hellozapi.registerConstant(std::move(helloDebugModeConst));
   hellozapi.registerConstant(std::move(helloPiConst));
   return hellozapi;
}

}

如果您對(duì) std::move 感到陌生,您可以閱讀 cpp reference 手冊(cè)

std::move 用戶手冊(cè)

怎么樣,就這么幾行,咱們的預(yù)定義常量就算定義好了,現(xiàn)在當(dāng)執(zhí)行我們 PHP 腳本的時(shí)候就可以直接使用了。

PHP Code
if (defined("HELLO_ZAPI_VERSION")) {
    echo HELLO_ZAPI_VERSION;
}
echo "
";
if (defined("HELLO_ZAPI_NAME")) {
    echo HELLO_ZAPI_NAME;
}
echo "
";
if (defined("HELLO_DEBUG_MODE")) {
    if (HELLO_DEBUG_MODE) {
        echo "true";
    } else {
        echo "false";
    }
}
echo "
";
if (defined("HELLO_ZAPI_PI")) {
    echo HELLO_ZAPI_PI;
}
// you will get
// ?65538
// Hello zendAPI!
// true
// 3.14

好了,到這里我們就把預(yù)定義常量就講完了,我沒(méi)有騙您吧,真的很簡(jiǎn)單,稍作調(diào)整讓我們繼續(xù)前進(jìn)!

原文閱讀:聽(tīng)說(shuō)每個(gè)擴(kuò)展都會(huì)定義自己常量,不要擔(dān)心我們也行

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/25933.html

相關(guān)文章

  • C++ 開(kāi)發(fā) PHP 7 擴(kuò)展原生函數(shù)定義

    摘要:第一步打開(kāi)項(xiàng)目下的文件,在文件中輸入我們的函數(shù)的原型聲明代碼。這行代碼注冊(cè)一個(gè)原型為的函數(shù),當(dāng)這個(gè)函數(shù)被執(zhí)行的時(shí)候,我們的函數(shù)將被運(yùn)行時(shí)調(diào)用。原文地址開(kāi)發(fā)擴(kuò)展之原生函數(shù)定義 在上一篇中我們?cè)趆ellozapi擴(kuò)展中我們定義了幾個(gè)常量,但是一個(gè)有用的擴(kuò)展,必須得有函數(shù),沒(méi)有函數(shù)的擴(kuò)展啥用沒(méi)有,如果您覺(jué)得定義函數(shù)很難的話,您又錯(cuò)了,zendAPI就是為了讓您生活變得美好而生的,而不會(huì)讓事情...

    asce1885 評(píng)論0 收藏0
  • C++ 開(kāi)發(fā) PHP 7 擴(kuò)展定義常量

    摘要:比如擴(kuò)展的那么我們必須也在我們擴(kuò)展中也定義幾個(gè)常量玩玩啊,其實(shí)真的很簡(jiǎn)單,不信那咱們走著看。好了,到這里我們就把預(yù)定義常量就講完了,我沒(méi)有騙您吧,真的很簡(jiǎn)單,稍作調(diào)整讓我們繼續(xù)前進(jìn)原文鏈接開(kāi)發(fā)擴(kuò)展之定義常量 大家如果經(jīng)常閱讀 PHP 官方手冊(cè)的話會(huì)發(fā)現(xiàn),在擴(kuò)展那一章里面的每個(gè)擴(kuò)展的介紹的時(shí)候,都有一節(jié)是 Predefined Constants 預(yù)定義常量,這些常量是不需要您在 PHP...

    syoya 評(píng)論0 收藏0
  • C++ 開(kāi)發(fā) PHP 7 擴(kuò)展模塊入口定義

    摘要:每一個(gè)擴(kuò)展必須有一個(gè)描述對(duì)象,在中我們類主要的作用主要完成這個(gè)功能。表示我們擴(kuò)展導(dǎo)出符號(hào)給其他庫(kù)使用。文章使用的編程文檔的引用連接參考手冊(cè)參考手冊(cè)原文鏈接開(kāi)發(fā)擴(kuò)展之模塊入口定義 zendAPI 項(xiàng)目不提供任何底層的功能,只是封裝了 zend engine 提供的功能,對(duì)上提供一個(gè)易用的編程接口。這篇文章中,我們將介紹 C++ 世界與 C 世界交匯的地方,在這里也是 zendAPI 的接...

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

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

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

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

    nihao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<