爱程序网

php 变量原理

来源: 阅读:

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

Tags:php 变量原理
关于爱程序网 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助