zend_string是PHP7新增的结构。结构如下:
struct _zend_string {
zend_refcounted_h gc; /*gc信息*/
zend_ulong h; /* hash value */
size_t len; /*字符串长度*/
char val[1]; /*字符串起始地址*/
};
在Zend/zend_string.h
提供了一些zend_string处理的一些方法。ZSTR_
开头的宏方法是zend_string结构专属的方法。主要有如下几个:
#define ZSTR_VAL(zstr) (zstr)->val
#define ZSTR_LEN(zstr) (zstr)->len
#define ZSTR_H(zstr) (zstr)->h
#define ZSTR_HASH(zstr) zend_string_hash_val(zstr)
ZSTR_VAL
ZSTR_LEN
ZSTR_H
宏方法分别对应zend_string结构的成员。ZSTR_HASH
是获取字符串的hash值,如果不存在,就调用hash函数生成一个。