PHP中部分宏应用

一、字符串复制安全

  ZVAL_STRINGL(pzv, str, len, dup);str 和 len 分别为内存中保存的字符串地址和他的长度,dup之名该字符串是否须要被复制,值为1则将先申请一块新内存并复制该支付穿,而后把新内存的地址地址复制给pzv,值为0时则直接把str的地址赋值给zval。函数

二、字符串复制内存

  在PHP中咱们获取字符串长度,通常都会使用strlen()函数,着了说一个通常不会用到的方法。资源

  若是想在某一位置截取该字符串或已经知道了该字符串的长度,那么能够使用宏ZAVAL_STRINGL (zval, string, length, duplicate),它显式的指定了字符串的长度,而不是使用strlen()函数。这个宏用该字符串长度做为参数。但它是二进制安全的,且速度也比ZVAL_STRING快,由于少了strlen。字符串

三、资源类型string

  PHP中的资源类型的值其实就是一个整数,因此ZVAL_RESOURCE 和 ZVAL_LONG的工做差很少,只不过它会把zval的类型设置为IS_RESOURCE。因此ZVAL_RESOURCE  约等于ZVAL_LONG二进制

四、其余的部分宏方法

  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;

相关文章
相关标签/搜索