欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP 源码学习 | 变量类型数据结构

程序员文章站 2023-01-23 08:22:56
前段时间因为项目需要,研究了一下在 Windows 系统下进行 PHP 扩展的开发,对于 PHP 扩展的开发并不是一件容易的事情(话又说回来了,会者不难,难者不会,关键是自己不会)。我当时的需求,主要是通过 PHP 扩展来加载 DLL 文件,并调用 DLL 中的导出函数。由于以前有一些 Win32 ......

       前段时间因为项目需要,研究了一下在 windows 系统下进行 php 扩展的开发,对于 php 扩展的开发并不是一件容易的事情(话又说回来了,会者不难,难者不会,关键是自己不会)。我当时的需求,主要是通过 php 扩展来加载 dll 文件,并调用 dll 中的导出函数。由于以前有一些 win32 开发的基础,因此这个需求相对还不算太复杂。

 

       开发 php 扩展比较难,我个人认为有两方面的原因,一方面需要了解操作系统相关的开发,毕竟 php 扩展不是 .so 文件就是 .dll 文件,另一方面需要了解 php 本身的底层数据结构。因此,借此机会就打算学习 php 的源码。不过说来惭愧,由于本身能力有限,所以学习速度比较缓慢。当然了,我是在有参考书的情况下进行学习的,但是速度也并不高。在有参考书的情况下,学习速度也不快,除了本身的能力外,另一方面是数据结构比较多,而且数据之间的关系也比较多,不能很快的对数据结构进行记忆,也不能很好的理清数据结构之间的关系,这是我比较大的障碍。(当然了,我投入的时间也并不多,这个是不好意思说罢了)

 

       由于上面的原因,我觉得一边看书和看源码的同时,一边去整理各个数据结构和数据关系的图,以方便和加强自己的记忆,从而让自己更好的去理解。

 

       我看的参考书,在源码分析前,首先介绍了源码的目录结构,我将其整理成了思维导图,如下图。

PHP 源码学习 | 变量类型数据结构

 

       源码目录结构相对比较简单,毕竟就是一个大纲,在不断学习源码的过程中,其实可以接着完善,把源码相应的文件,相应的结构体都维护进去,这样思维导图就会逐步的完整,也就相对的有意义了。

 

       在参考书中介绍完源码目录结构后,开始介绍 php 变量的数据结构。变量的数据结构在书中有详细的介绍,在详细介绍之前,只是粗略的进行了整体上的介绍,在这里,我把它们的数据结构和数据关系也进行了整理,并且把结构体所在的目录和文件也进行了标注,方便自己在学习源码的时候方便查找,也方便快速查阅各个数据结构之间的关系,毕竟这些数据结构实在太多了,如下图。

 PHP 源码学习 | 变量类型数据结构

 

       上面的图,就是关于 php 变量的底层数据结构的图,图中的数据结构中字段并不完整,因为我是在逐步的去完善,在每学习完一部分后就去完善一部分数据结构,当数据结构完善了,图也就完善了。由于图过于大,所以这里没有办法显示清楚,需要详细图片的,可以在公众号中回复“php源码学习”,即可获得清晰的大图。希望可以对大家学习 php 的源码有所帮助。

 


我的微信公众号:“码农up2u”

PHP 源码学习 | 变量类型数据结构