怎样去阅读一份php源代码


Posted in PHP onAugust 21, 2009

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

PHP 相关文章推荐
Godaddy空间Zend Optimizer升级方法
May 10 PHP
PHP操作XML作为数据库的类
Dec 19 PHP
Codeigniter购物车类不能添加中文的解决方法
Nov 29 PHP
PHP封装的Twitter访问类实例
Jul 18 PHP
ThinkPHP进程计数类Process用法实例详解
Sep 25 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
Feb 22 PHP
PHP屏蔽关键字实现方法
Nov 17 PHP
PHP数据库操作三:redis用法分析
Aug 16 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
Dec 21 PHP
详解将数据从Laravel传送到vue的四种方式
Oct 16 PHP
解决laravel5.4下的group by报错的问题
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
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
浅谈bootstrap源码分析之tab(选项卡)
2016/06/06 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
redux中间件之redux-thunk的具体使用
2018/04/17 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
用python登录Dr.com思路以及代码分享
2014/06/25 Python
python实现的解析crontab配置文件代码
2014/06/30 Python
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
Python文件及目录操作实例详解
2015/06/04 Python
Python调用C语言的实现
2019/07/26 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
Python eval函数介绍及用法
2020/11/09 Python
使用Python实现音频双通道分离
2020/12/25 Python
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
汇科协同Java笔试题
2012/03/31 面试题
汽车转让协议书范本
2014/12/07 职场文书
计划生育目标责任书
2015/05/09 职场文书
PHP中多字节字符串操作实例详解
2021/08/23 PHP