码迷,mamicode.com
首页 > Web开发 > 详细

php底层--2

时间:2016-10-17 00:11:36      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:

2016-9-25

php的底层是用C语言写的,C语言是强类型的语言,而php是弱类型的语言,这是怎么实现的呢?

我们去查询PHP的源码可以发现,在源码的zend文件夹下,打开zend.h文件,找到C语言的结构体struct _zval_struct

struct _zval_struct{

  zvalue_value value;

  zend_uint refcount__gc;

  zend_uchar type;

  zend_uchar is_ref_gc;

}

这个结构体是php底层变量实现的关键。

PS:

1 php中的一个变量就是底层一个结构体来描述的。

  在底层中,php的值用zvalue_value value标记,而类型是根据上下文得来的zend_uchar type,zvalue_value是一个union,里面是C语言的类型,如long,double,

struct str,struct hashtable object等,是枚举类型,也就是说,一个变量它的类型是根据type定的,而值是根据zvalue_value定的。

如:

$a=3;

表现的C语言中就是一个结构体。

struct{

zvalue_value {long 3}

type IS_LONG

}

 

php底层--2

标签:

原文地址:http://www.cnblogs.com/tianye8123/p/5967960.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!