怎样去阅读一份php源代码


Posted in PHP onAugust 21, 2009

一份好的源代码例如 dz的论坛,wind论坛,帝国cms,dedecms等,都具有自己的一套设计思路和设计模式,所以在看某个产品之前就要做好心理准备,可以把自己的经验和这些产品做对比,但千万别一直用自己的思维去评判。一句话就是“以学习和批评的辩证思想去看待”。
好吧!我们就开始吧!
那具体的我们怎样去阅读一份php的源代码呢?
一。先把源代码安装起来,结合它的文档和手册,熟悉其功能和它的应用方式。
二。浏览源代码的目录结构,了解各个目录的功能。
三。经过以上两步后相信你对这个开源的产品有了一个初步的了解了,那现在就开始分析它的源码吧。这一步我们开始分析源代码框架。例如入口方式是单入口还是多入口,页面之间的调用规则,能根据规则找出某个功能用到的页面。
四。熟悉源代码的代码写作风格,例如缩进方式,排版格式等。
五。熟悉一下源代码用到的数据库和表,可以参考它的技术支持文档。
六。经过以上几步相信大家已经对这份源代码有了更深刻的了解,不过这种了解还只是表面的,下来我们从6个方面具体的去分析它吧:
1.入口构造以及页面调用方式的具体实现,如果阅读时看到工具类和工具函数,尽量去熟悉一下。这一步的分析可以学习到源代码的系统架构方式。
2.分析源代码用到的工具类和工具函数,这样可以学到很多程序编写技巧。可以提升自己编程功力。
3.结合一些安全规则,研究这个源代码是怎样实现安全方面的设计的。这样可以提高自己在安全方面的意识和功力。
4.如果有模板引擎的话,研究一下源代码的模板引擎。大致从实现方式,效率,易用性等几个方面去考虑。
5.研究系统的各个功能模块,这样既能学习编程技巧还能打开自己的编程思路,下次遇到类似的东东就心里有谱了。
6.研究系统所用到设计模式,一样的功能实现,用到的设计模式可能相差很多,对比我们之前所作的东东分析设计模式,是提升我们驾驭代码的不二法门。
7.研究源代码对访问压力,执行效率,系统效率,数据库查询的优化。
方法只是途径和工具,具体实践还需要大家的努力。自己的感想是不要着急,认真分析,把分析心得用到自己的具体项目上,呵呵!

PHP 相关文章推荐
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
May 29 PHP
windows7下安装php的imagick和imagemagick扩展教程
Jul 04 PHP
PHP中构造函数和析构函数解析
Oct 10 PHP
php使用cookie实现记住登录状态
Apr 27 PHP
php读取csc文件并输出
May 21 PHP
yii2 数据库读写分离配置示例
Feb 10 PHP
PHP进程通信基础之信号量与共享内存通信
Feb 19 PHP
php smtp实现发送邮件功能
Jun 22 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
Aug 04 PHP
php压缩文件夹最新版
Jul 18 PHP
Laravel5.5以下版本中如何自定义日志行为详解
Aug 01 PHP
PHP如何使用array_unshift()在数组开头插入元素
Sep 01 PHP
php win下Socket方式发邮件类
Aug 21 #PHP
Discuz 模板语句分析及知识技巧
Aug 21 #PHP
php 分页原理详解
Aug 21 #PHP
PHP nl2br函数 将换行字符转成 <br>
Aug 21 #PHP
PHP 各种排序算法实现代码
Aug 20 #PHP
谈PHP生成静态页面分析 模板+缓存+写文件
Aug 17 #PHP
数据库查询记录php 多行多列显示
Aug 15 #PHP
You might like
Zerg兵种介绍
2020/03/14 星际争霸
解析strtr函数的效率问题
2013/06/26 PHP
PHP如何将log信息写入服务器中的log文件
2015/07/29 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
$()JS小技巧
2007/07/21 Javascript
javascript FormatNumber函数实现方法
2008/12/30 Javascript
jquery清空表单数据示例分享
2014/02/13 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
Javascript的闭包详解
2014/12/26 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
2016/10/12 Javascript
AngularJS中watch监听用法分析
2016/11/04 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
2017/01/18 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
python中使用sys模板和logging模块获取行号和函数名的方法
2014/04/15 Python
python中日期和时间格式化输出的方法小结
2015/03/19 Python
python fabric使用笔记
2015/05/09 Python
python3音乐播放器简单实现代码
2020/04/20 Python
解决Python requests 报错方法集锦
2017/03/19 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
伊芙丽官方旗舰店:中国淑女一线品牌
2017/12/01 全球购物
工业学校毕业生自荐书
2014/01/03 职场文书
师范生的个人求职信范文
2014/01/04 职场文书
正科级干部考察材料
2014/05/29 职场文书
2015年学校财务工作总结
2015/05/19 职场文书