怎样去阅读一份php源代码


Posted in PHP onAugust 21, 2009

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

PHP 相关文章推荐
session在PHP大型web应用中的使用
Jun 25 PHP
file_get_contents获取不到网页内容的解决方法
Mar 07 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
Apr 22 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
Feb 13 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
php面向对象中的魔术方法中文说明
Mar 04 PHP
Yii实现MySQL多数据库和读写分离实例分析
Dec 03 PHP
yii2控制器Controller Ajax操作示例
Jul 23 PHP
PHP 类与构造函数解析
Feb 06 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
May 11 PHP
PDO::beginTransaction讲解
Jan 27 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 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
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
php有道翻译api调用方法实例
2014/12/22 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
javascript 常用关键字列表集合
2007/12/04 Javascript
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
jQuery实用技巧必备(中)
2015/11/03 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
JS hashMap实例详解
2016/05/26 Javascript
Jquery遍历select option和添加移除option的实现方法
2016/08/26 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
2019/07/10 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
vue+高德地图实现地图搜索及点击定位操作
2020/09/09 Javascript
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
[20:46]Ti4循环赛第三日VG vs DK
2014/07/12 DOTA
使用Python中的tkinter模块作图的方法
2017/02/07 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
Python 导入文件过程图解
2019/10/15 Python
浅析使用Python搭建http服务器
2019/10/27 Python
Python线程指南分享
2019/11/19 Python
满月酒答谢词
2014/01/14 职场文书
音乐教育感言
2014/03/05 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
python实现自动化群控的步骤
2021/04/11 Python