怎样去阅读一份php源代码


Posted in PHP onAugust 21, 2009

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

PHP 相关文章推荐
PHP与MySQL开发中页面出现乱码的一种解决方法
Jul 29 PHP
PHP Zip压缩 在线对文件进行压缩的函数
May 26 PHP
PHP写杨辉三角实例代码
Jul 17 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
Oct 24 PHP
PHP5.2中PDO的简单使用方法
Mar 25 PHP
浅谈PHP eval()函数定义和用法
Jun 21 PHP
PHP微信红包生成代码分享
Oct 06 PHP
php自定义时间转换函数示例
Dec 07 PHP
php unlink()函数使用教程
Jul 12 PHP
PHP简单验证码功能机制实例详解
Mar 27 PHP
PHP Primary script unknown 解决方法总结
Aug 22 PHP
php写入mysql中文乱码的实例解决方法
Sep 17 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
微信自定义菜单的处理开发示例
2015/04/16 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
javascript setTimeout和setInterval 的区别
2009/12/08 Javascript
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
2012/01/04 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
使用JavaScript获取电池状态的方法
2014/05/03 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
Bootstrap3 datetimepicker控件使用实例
2016/12/13 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
javascript中神奇的 Date对象小结
2017/10/12 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
使用svg实现动态时钟效果
2018/07/17 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
Python使用微信SDK实现的微信支付功能示例
2017/06/30 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
基于python生成器封装的协程类
2019/03/20 Python
python监控nginx端口和进程状态
2019/09/06 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
英国厨房与餐具用品为主的设计品牌:Joseph Joseph
2018/04/26 全球购物
如果有两个类A,B,怎么样才能使A在发生一个事件的时候通知B
2016/03/12 面试题
医院总经理职责
2013/12/26 职场文书
一份婚庆公司创业计划书
2014/01/11 职场文书
运动会入场口号
2014/06/07 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
班主任寄语2016
2015/12/04 职场文书