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
}
时间: 2024-10-11 17:00:43