【PHP7内核剖析】——数据类型
发布时间:2022-09-14 12:43:42 所属栏目:PHP 来源:
导读: 前言:本来这一章是不想写的,引文关于数据类型这章内容,大多讲的都是一些PHP内部的处理,对于我们平时开发PHP用处不是特别大,我们也可以不用去确切的了解。然而今天的项目进度做完了,看看还有写时间,想着也
|
前言:本来这一章是不想写的,引文关于数据类型这章内容,大多讲的都是一些PHP内部的处理,对于我们平时开发PHP用处不是特别大,我们也可以不用去确切的了解。然而今天的项目进度做完了,看看还有写时间,想着也别浪费么,那就简单写一些,就当是练习一下自己写文章的能力了吧! 正文开始: 数据类型这个东西吧,但凡是高级语言,肯定是离不开的,这样一来,这个东西其实就是编程的最基础的东西了,其实你如果懂了一们语言的数据类型后,其他的语言大同小异。 首先说一下PHP中的变量类型吧!这个东西我隐约记得我再一次的面试中有面试管问过我,那我就重点说一下 PHP的变量类型主要分为三类:标量类型,复合类型,特殊类型。 标量类型有:字符串(string),整形(int),浮点型(double),布尔型(bool) 复合类型有:数组(array),对象(object) 特殊类型有:资源(resource),NULL 嗯,到这里基本就可以了,下面主要说了一下数据类型的内部实现。有兴趣可以看哈,没兴趣可以跳过了。 然后我们再来看一下PHP对于数据类型的内部实现吧 重点说两个概念:zval,zend_value 先看zval的源码: zend_value是用来保存具体的变量值,u1里面就一个v结构体与一个32为无符号的type_info,type_info的值是一个4字节的整型,每一个字节对应了v结构体中的一个变量。v结构体中的type是用来标识value的类型,type_flags是变量的内存管理。u2的话其实是用来凑数的,占了4个字节,里面存放的是一些特殊场景用的东西。先说一下为啥我刚刚说u2是用来凑数的,首先,在这个struct结构体中,value是占了8字节php内核,u1是占了4字节,但是他们两个加起来并不是12字节的(内部怎么回事暂时不清楚,后面有机会再研究一下),然后因为系统内部会进行字节对齐,所以这个结构体会占用16字节,那放着4字节不用的话,就浪费了,所以就有了u2这个占4字节的联合体。 (编辑:草根网_南昌站长网 ) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐

浙公网安备 33038102330553号