PHP内核变量访问宏
来源:互联网 发布:windows下php exec 编辑:程序博客网 时间:2024/04/30 20:26
使用"zval.type=IS_LONG"
方式可以设置一个变量的类型,不过这样做不是很合适,因为不能预测PHP以后的版本会发生什么变化,有可能在以后的版本中type成员变量的名字歌城type_gc或者其他的名字,那么之前写好的扩展就不能适应这些版本了。为了解决这个问题,PHP内核中提供了一个访问和设置变量类型的方法,具体如下:
Z_TYPE(zval) 对应zval结构体的实体Z_TYPE_P(&zval) 对应zval结构体的指针Z_TYPE_PP(&&zval) 对应zval结构体的二级指针
可以用如下方式设置变量的类型:
Z_TYPE(zval) = IS_LONG;
用以下方式访问变量的类型:
if (Z_TYPE(zval) == IS_LONG) { printf("is long \n");}
这样,就算以后zval结构体的type成员变量改名,我们的扩展也可以继续使用。
与变量的类型一样,变量的值也有相应的访问宏定义,如下表:
Z_LVAL_P(&zval)
Z_LVAL_PP(&&zval) 浮点类型 Z_DVAL(zval)
Z_DVAL_P(&zval)
Z_DVAL_PP(&&zval) 布尔类型 Z_BVAL(zval)
Z_BVAL_P(&zval)
Z_BVAL_PP(&&zval) 字符串类型 取得值:
Z_STRVAL(zval)
Z_STRVAL_P(&zval)
Z_STRVAL_PPP(&&zval)
取得长度:
Z_STRLEN(zval)
Z_STRLEN_P(&zval)
Z_STRLEN_PP(&&zval) 数组类型 Z_ARRVAL(zval)
Z_ARRVAL_P(&zval)
Z_ARRVAL_PP(&&zval) 资源类型 Z_RESVAL(zval)
Z_RESVAL_P(&zval)
Z_RESVAL_PP(&&zval)
使用上表可以设置一个变量的类型和值。例如,创建一个值为10的整数变量lvar:
zval lvar;Z_TYPE(lvar) = IS_LONG;z_LVAL(lvar) = 10;
如果用PHP脚本的话,相当于一下代码:
$lvar = 10;
注意: PHP内核还利用上面的宏包装一些更方便的宏。
1 0
- PHP内核变量访问宏
- PHP访问表单变量
- PHP内核探索笔记-变量
- PHP内核探索:变量概述
- PHP访问表单引用变量
- 原创:PHP内核研究 静态变量
- PHP变量在内核中的实现
- 【PHP内核学习】变量和数据类型
- 18.PHP内核探索:变量概述
- php变量在内核中的存储方式
- PHP内核探索:变量类型的转换
- 静态变量 深入理解php内核
- PHP变量在内核中的存储方式
- PHP变量在内核中的实现
- PHP内核探索:变量存储与类型
- php访问成员变量和成员方法
- PHP之 访问表单变量的方法
- php函数不能直接访问外部变量
- 【栈】仅用递归来实现栈逆序
- 关于HttpClient上传中文乱码的解决办法
- Android5.1 FrameWork添加自己的SystemService提供API给APP
- 测试服务器的运算速度
- 默认构造函数-(无关、有关)
- PHP内核变量访问宏
- 观察者模式
- 建行E商贸通支付开发系列之一(了解E商贸通)
- cloud manager安装 下载
- 解决“adb不是内部或者外部命令”的方法
- FFMPEG Tips (1) 如何打印日志
- C程序编译执行过程
- JS中的childNodes的兼容性问题
- 自定义ViewGroup动态显示添加view的位置