首页 > 代码库 > php底层--2
php底层--2
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。