C++开发PHP 7扩展之定义常量
发布:smiling 来源: PHP粉丝网 添加日期:2018-05-20 18:14:26 浏览: 评论:0
大家如果经常阅读 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 手册参考
现在大家学习完背景知识,让我们撸起袖子写代码吧。
- 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 手册
std::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
好了,到这里我们就把预定义常量就讲完了,我没有骗您吧,真的很简单,稍作调整让我们继续前进.
Tags: C++ 常量
相关文章
- ·PHP中通过Web 执行C/C++应用程序(2013-11-13)
- ·PHP中调用C/C++制作的动态链接库的教程(2019-11-18)
- ·PHP中调用C/C++制作的动态链接库的教程(2021-07-13)
- ·PHP 常量 dirname(__file__)获取路径方法(2014-05-20)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)