php底层--2

Posted tianye_guazi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章

探究PHP底层

PHP 底层的运行机制和工作原理

PHP 底层的运行机制和工作原理

PHP底层架构和运行流程

理解PHP底层原理

深入理解php底层:php生命周期