作者:木头人2幸福 | 来源:互联网 | 2017-05-13 02:18
1.php作为一种弱类型语言,不需要显式的指明变量的类型,但是php变量也是有类型的,php变量包含以下8种变量(三大类)
a.标量类型:boolean,integer,float(double),string
b.复合类型:array,object
c.特殊类型:resource,null
2.php使用c语言实现变量的原理
a.变量存储结构
typedef struct _zval_struct zval;
...
struct _zval_struct {
/* Variable information */
zvalue_value value; /*存储变量的值,是一个union类型*/
zend_uint refcount__gc;/*变量的引用计数,默认为1*/
zend_uchar type; /*变量的类型,为IS_NULL、IS_BOOL、IS_LONG、IS_DOUBLE、IS_STRING、IS_ARRAY、IS_OBJECT和IS_RESOURCE之一*/
zend_uchar is_ref__gc;/*表示是否为引用*/
};
b.存储变量值得zvalue_value如下
typedef union _zvalue_value {
long lval; /* long value */
double dval; /* double value */
struct {
char *val;
int len;
} str;
HashTable *ht; /* hash table value */
zend_object_value obj;
} zvalue_value;
这里使用union而不是struct是为了节省内存空间,以为一个变量同一时间只能表示一种类型
参考资料:tipi开源项目http://www.php-internals.com/book/?p=chapt03/03-01-00-variables-structure
以上就介绍了php 变量原理,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。