php7 常量定义,C++ 开发 PHP 7 扩展之原生常量定义

大家如果经常阅读 PHP 官方手册的话会发现,在扩展那一章里面的每个扩展的介绍的时候,都有一节是 Predefined 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");

现在大家学习完背景知识,让我们撸起袖子写代码吧。

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;

}

}

如果您对 std::move 感到陌生,您可以阅读 cpp reference 手册

怎么样,就这么几行,咱们的预定义常量就算定义好了,现在当执行我们 PHP 脚本的时候就可以直接使用了。

PHP Code

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

好了,到这里我们就把预定义常量就讲完了,我没有骗您吧,真的很简单,稍作调整让我们继续前进!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值