摘要:比如擴展的那么我們必須也在我們擴展中也定義幾個常量玩玩啊,其實真的很簡單,不信那咱們走著看。好了,到這里我們就把預(yù)定義常量就講完了,我沒有騙您吧,真的很簡單,稍作調(diào)整讓我們繼續(xù)前進原文鏈接開發(fā)擴展之定義常量
大家如果經(jīng)常閱讀 PHP 官方手冊的話會發(fā)現(xiàn),在擴展那一章里面的每個擴展的介紹的時候,都有一節(jié)是 Predefined Constants 預(yù)定義常量,這些常量是不需要您在 PHP 里面進行定義就可以使用的。
比如 Mysqli 擴展的 Predefined Constants http://php.net/manual/en/mysqli.constants.php
那么我們必須也在我們 hellozapi 擴展中也定義幾個常量玩玩啊,其實真的很簡單,不信?那咱們走著看。
回到我們上節(jié)介紹的定義項目入口代碼:
#include "zapi/ZendApi.h" extern "C" { ZAPI_DECL_EXPORT void *get_module() { static zapi::lang::Extension hellozapi("hellozapi", "1.0"); return hellozapi; } }
咱們定義如下幾個常量:(不要太糾結(jié)實際意義,哈哈,本身我們的這個擴展都是臆想出來的)
HELLO_ZAPI_VERSION (int)
HELLO_ZAPI_NAME (string)
HELLO_DEBUG_MODE (bool)
HELLO_ZAPI_PI (double)
zendAPI 常量描述類簡單介紹在 zendAPI 里面我們使用 zapi::lang::Constant 來描述一個常量的元信息,使用起來很簡單,他的構(gòu)造函數(shù)接受兩個參數(shù),第一個參數(shù)是常量名稱,第二個參數(shù)是常量的值。例如我們使用下面代碼去定義一個 ROOT_DIR 常量, 常量值是 /srv/www。
using zapi::lang::Constant; Constant dirConst("ROOT_DIR", "/srv/www");
zapi::lang::Constant API 手冊參考
現(xiàn)在大家學(xué)習(xí)完背景知識,讓我們擼起袖子寫代碼吧。
#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; } }
如果您對 std::move 感到陌生,您可以閱讀 cpp reference 手冊
std::move 用戶手冊
怎么樣,就這么幾行,咱們的預(yù)定義常量就算定義好了,現(xiàn)在當(dāng)執(zhí)行我們 PHP 腳本的時候就可以直接使用了。
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ù)定義常量就講完了,我沒有騙您吧,真的很簡單,稍作調(diào)整讓我們繼續(xù)前進!
原文鏈接: C++ 開發(fā) PHP 7 擴展之定義常量
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/25962.html
摘要:大家如果經(jīng)常閱讀官方手冊的話會發(fā)現(xiàn),在擴展那一章里面的每個擴展的介紹的時候,都有一節(jié)是預(yù)定義常量,這些常量是不需要您在里面進行定義就可以使用的。比如擴展的那么我們必須也在我們擴展中也定義幾個常量玩玩啊,其實真的很簡單,不信那咱們走著看。 大家如果經(jīng)常閱讀 PHP 官方手冊的話會發(fā)現(xiàn),在擴展那一章里面的每個擴展的介紹的時候,都有一節(jié)是 Predefined Constants 預(yù)定義常量...
摘要:第一步打開項目下的文件,在文件中輸入我們的函數(shù)的原型聲明代碼。這行代碼注冊一個原型為的函數(shù),當(dāng)這個函數(shù)被執(zhí)行的時候,我們的函數(shù)將被運行時調(diào)用。原文地址開發(fā)擴展之原生函數(shù)定義 在上一篇中我們在hellozapi擴展中我們定義了幾個常量,但是一個有用的擴展,必須得有函數(shù),沒有函數(shù)的擴展啥用沒有,如果您覺得定義函數(shù)很難的話,您又錯了,zendAPI就是為了讓您生活變得美好而生的,而不會讓事情...
摘要:每一個擴展必須有一個描述對象,在中我們類主要的作用主要完成這個功能。表示我們擴展導(dǎo)出符號給其他庫使用。文章使用的編程文檔的引用連接參考手冊參考手冊原文鏈接開發(fā)擴展之模塊入口定義 zendAPI 項目不提供任何底層的功能,只是封裝了 zend engine 提供的功能,對上提供一個易用的編程接口。這篇文章中,我們將介紹 C++ 世界與 C 世界交匯的地方,在這里也是 zendAPI 的接...
摘要:繼上一篇面試常考內(nèi)容之面向?qū)ο蟀l(fā)表后,今天更新,需要的可以直接點擊文字進行跳轉(zhuǎn)獲取。析構(gòu)函數(shù),當(dāng)對象被銷毀時調(diào)用。 PHP面試專欄正式起更,每周一、三、五更新,提供最好最優(yōu)質(zhì)的PHP面試內(nèi)容。繼上一篇PHP面試常考內(nèi)容之面向?qū)ο螅?)發(fā)表后,今天更新(2),需要(1)的可以直接點擊文字進行跳轉(zhuǎn)獲取。整個面向?qū)ο笪恼碌慕Y(jié)構(gòu)涉及的內(nèi)容模塊有: 一、面向?qū)ο笈c面向過程有什么區(qū)別?二、面向?qū)?..
摘要:前面兩節(jié)介紹了如何用編寫常用的擴展函數(shù),擴展類。對怎么使用開發(fā)擴展應(yīng)該已經(jīng)很熟悉了,下面晉級學(xué)習(xí)一下關(guān)于擴展函數(shù)參數(shù)類型方面的內(nèi)容。 PHP擴展是高級PHP程序員必須了解的技能之一,對于一個初入門的PHP擴展開發(fā)者,怎么才能開發(fā)一個成熟的擴展,進入PHP開發(fā)的高級領(lǐng)域呢?本系列開發(fā)教程將手把手帶您從入門進入高級階段。本教程系列在linux下面開發(fā)(推薦使用centos),php版本用的...
閱讀 1244·2021-11-11 16:55
閱讀 1540·2021-10-08 10:16
閱讀 1197·2021-09-26 10:20
閱讀 3574·2021-09-01 10:47
閱讀 2456·2019-08-30 15:52
閱讀 2687·2019-08-30 13:18
閱讀 3199·2019-08-30 13:15
閱讀 1120·2019-08-30 10:55