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