怎样去阅读一份php源代码


Posted in PHP onAugust 21, 2009

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

PHP 相关文章推荐
如何对PHP程序中的常见漏洞进行攻击(下)
Oct 09 PHP
特详细的PHPMYADMIN简明安装教程
Aug 01 PHP
PHP 文件系统详解
Sep 13 PHP
关于尾递归的使用详解
May 02 PHP
php目录操作实例代码
Feb 21 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
Jun 23 PHP
CodeIgniter模板引擎使用实例
Jul 15 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
Oct 22 PHP
微信支付开发维权通知实例
Jul 12 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
解决tp5在nginx下修改配置访问的问题
Oct 16 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
通过php快速统计某个数据库中每张表的数据量
2012/09/04 PHP
php ci框架验证码实例分析
2013/06/26 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
2018/05/28 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
js实现列表按字母排序
2020/08/11 Javascript
django接入新浪微博OAuth的方法
2015/06/29 Python
Django的session中对于用户验证的支持
2015/07/23 Python
详解Python匿名函数(lambda函数)
2019/04/19 Python
python itchat给指定联系人发消息的方法
2019/06/11 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
新西兰领先的内衣店:Bendon Lingerie新西兰
2018/07/11 全球购物
GUESS Factory加拿大:牛仔裤、服装及配饰
2019/09/20 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
法律专业个人实习自我鉴定
2013/09/23 职场文书
有趣的广告词
2014/03/18 职场文书
超市创业计划书
2014/04/24 职场文书
推荐信模板
2014/05/09 职场文书
交通事故赔偿协议书
2014/10/16 职场文书
2014年测量员工作总结
2014/12/12 职场文书
幼儿园中班教学反思
2016/03/03 职场文书
Python实现的扫码工具居然这么好用!
2021/06/07 Python
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python