《C++ 开发 PHP 7 扩展之模块常量定义》要点:
本文介绍了C++ 开发 PHP 7 扩展之模块常量定义,希望对您有用。如果有疑问,可以联系我们。
《C++ 开发 PHP 7 扩展之模块常量定义》是否对您有启发,欢迎查看更多与《C++ 开发 PHP 7 扩展之模块常量定义》相关教程,学精学透。维易PHP学院为您提供精彩教程。
大家如果经常阅读 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 手册参考 http://www.zendapi.org/api/classzapi_1_1lang_1_1_constant.html
现在大家学习完配景知识,让我们撸起袖子写代码吧.
#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
怎么样,就这么几行,咱们的预定义常量就算定义好了,现在当执行我们 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
好了,到这里我们就把预定义常量就讲完了,我没有骗您吧,真的很简单,稍作调整让我们继续前进!
欢迎年夜家阅读 zendAPI 手册:http://www.zendapi.org/manual
转载请注明本页网址:
http://www.vephp.com/jiaocheng/9648.html