如何阅读/分析一份 PHP 开源程序源代码

喜欢 PHP 的原因之一是她有无数的开源程序 http://phpxref.com/home/code-library , 很多优秀的代码供你拿在手上细细品读!

分析源代码讲究方法, 就像来到一个新的地方需要地图一样!

如题: 如何分析一份 PHP 开源程序? 怎样才能在代码里面获取到更多的知识?

同楼上,我也会先运行程序,然后找到自己感兴趣的功能,从实现功能的页面开始边看边尝试进一步的修改文件,达到自己想要的效果。通过多次修改(其实这个过程就是对代码的读取与分析),就能大概了解各中内涵了。

我自己总结的一些方法, 抛砖引玉 😉

大致分析:

1. 软件使用上功能分析 – 大的方向了解程序的业务逻辑;
2. 目录结构 – 大体分析每个文件夹和文件存在的意义;
3. 数据库结构 – 程序的目标就是为了 数据 , 分析数据库逻辑设计, 具体到每一个字段设计, 能对程序有一个好的理解!
4. 设计模式 – 研究下设计模式, 有这样的一句话 把所有的PHP 到同一个文件里面,程序照样工作
5. 代码分析 – 从页面的最初请求开始, 模拟PHP解析器看代码, 主要从业务逻辑上进行代码的初步分;

程序设计分析:

1. 模板系统分析, 如果有的话
2. 缓存机制分析, 如果有的话
3. 插件机制, 如果有的话
4. 扩展性分析
5. 安全机制分析
6. 研究源代码对访问压力,执行效率,系统效率,数据库查询的优化..

我习惯 先找到入口 然后大概的流程理通了,以后再看细节

我通常先把程序运行起来,然后去修改里面的代码看会发生什么样的变化

俺不会编程,不过要是我去阅读一份源代码的话。首先是看官方文档,清楚文件布局、语法规范,熟悉程序的构造,和数据库结构等;然后再分层次的去仔细阅读每个功能实现的过程。

我会从页面入口开始看,先大致了解一个页面展示内容的构成,然后依次根据函数不断回退到对应的文件进行阅读。读完一个页面的内容后,一方面了解了代码包一部分较常规函数的使用,一方面也大致了解了代码包的文件结构。在此文件结构的基础上,分析其内部对象结构,并按继承关系从下向上阅读对象类库。