《C++ 開發(fā) PHP 7 擴展之模塊常量定義》要點:
本文介紹了C++ 開發(fā) PHP 7 擴展之模塊常量定義,希望對您有用。如果有疑問,可以聯(lián)系我們。
《C++ 開發(fā) PHP 7 擴展之模塊常量定義》是否對您有啟發(fā),歡迎查看更多與《C++ 開發(fā) PHP 7 擴展之模塊常量定義》相關教程,學精學透。維易PHP學院為您提供精彩教程。
大家如果經(jīng)常閱讀 PHP 官方手冊的話會發(fā)現(xiàn),在擴展那一章里面的每個擴展的介紹的時候,都有一節(jié)是 Predefined Constants 預定義常量,這些常量是不必要您在 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 手冊參考 http://www.zendapi.org/api/classzapi_1_1lang_1_1_constant.html
現(xiàn)在大家學習完配景知識,讓我們擼起袖子寫代碼吧.
#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 用戶手冊: http://en.cppreference.com/w/cpp/utility/move
怎么樣,就這么幾行,咱們的預定義常量就算定義好了,現(xiàn)在當執(zhí)行我們 PHP 腳本的時候就可以直接使用了.
if (defined("HELLO_ZAPI_VERSION")) {
echo HELLO_ZAPI_VERSION;
}
echo "\n";
if (defined("HELLO_ZAPI_NAME")) {
echo HELLO_ZAPI_NAME;
}
echo "\n";
if (defined("HELLO_DEBUG_MODE")) {
if (HELLO_DEBUG_MODE) {
echo "true";
} else {
echo "false";
}
}
echo "\n";
if (defined("HELLO_ZAPI_PI")) {
echo HELLO_ZAPI_PI;
}
// you will get
// ?65538
// Hello zendAPI!
// true
// 3.14
好了,到這里我們就把預定義常量就講完了,我沒有騙您吧,真的很簡單,稍作調(diào)整讓我們繼續(xù)前進!
歡迎年夜家閱讀 zendAPI 手冊:http://www.zendapi.org/manual
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/9648.html