PHP中部分宏应用
1、字符串复制
ZVAL_STRINGL(pzv, str, len, dup);str 和 len 分别为内存中保存的字符串地址和他的长度,dup之名该字符串是否需要被复制,值为1则将先申请一块新内存并复制该支付穿,然后把新内存的地址地址复制给pzv,值为0时则直接把str的地址赋值给zval。
2、字符串复制
在PHP中我们获取字符串长度,一般都会使用strlen()函数,着了说一个一般不会用到的方法。
如果想在某一位置截取该字符串或已经知道了该字符串的长度,那么可以使用宏ZAVAL_STRINGL (zval, string, length, duplicate),它显式的指定了字符串的长度,而不是使用strlen()函数。这个宏用该字符串长度作为参数。但它是二进制安全的,且速度也比ZVAL_STRING快,因为少了strlen。
3、资源类型
PHP中的资源类型的值其实就是一个整数,所以ZVAL_RESOURCE 和 ZVAL_LONG的工作差不多,只不过它会把zval的类型设置为IS_RESOURCE。所以ZVAL_RESOURCE 约等于ZVAL_LONG
4、其他的部分宏
ZVAL_BOOL(pzv, b): 将pzv所指的zval设置为IS-BOOL类型,值为b;
ZVAL_TRUE(pzv):将pzv所指的zval设置为IS_BOOL类型,值为true;
ZVAL_FALSE(pzv):将pzv所指的zval设置为IS_BOOL类型,值为false;
ZVAL_LONG(pzv, 1):将pzv所指的zval设置为IS_LONG类型,值为1;
ZVAL_DOUBLE(pzv, d):将pzv所指的zval设置为IS_DOUBLE类型,值为d;