php代码架构的八点注意事项


Posted in PHP onJanuary 25, 2016

本文总结讲述了php代码架构的八点注意事项。分享给大家供大家参考,具体如下:

写代码写了6年多了,看看以前的架构,看看现在的架构。都有一些不足的地方。不管怎么样,都一直在改进。说实话不太喜欢用框架这类东西,基本上所有的框架都大同小异,差不了多少,要用话的,你还要去了解思想,目录结构,文件调用,文件命名,代码规范等,挺浪费时间的。构架能满足很大一部分的要求,满足的人越多性能越差,这也是我不喜欢用架构的一个主要原因。下面说一下,代码架构方面的一些心德。

一、面向对象为主,面向过程为辅

php4是面向过程的,php5及以后支持面向对象。

1,面向对象的程序设计思想,对于代码的管理,规划更合理,性能更好等。
2,面向过程代码管理,规划比较简单,调用方式更直接,更清楚,效率方面比较差。
举个例子说明一下:
面向对象好比是一个软件园区,如果你想找某个公司的所在地,你要知道是几号楼,几层,几室。
面向过程好比是平民区,如果你要找某户人家,你要知道,什么路,多少号就行了。
如果要把软件园区高楼都变成民房,就要占用更多的土地。如果园区过大,找起来也不便宜,如果单独咨询室就方便多了。所以个人觉得,一个好的架构,一定是以面向对象为主,面向过程为辅。

二、目录结构的规划

代码架构的时候,这一点很重要,这就好比软件园区的大楼,不能随便盖,得有规律。入口文件放在什么地方,功能模块放在什么地方,模板文件放在什么地方。总之一句话,安排好,配置文件,JS文件,php文件,模块文件,CSS文件,图片文件等。

三、单入口还是多入口

目前我了解的php框架,还是CMS基本上都是单入口的。单入口还是多入口,各有各的好。有一点提一下单入口肯定比多入口要好,就url的重写。

四、面向对象的层级设计

一般情况下,基本上三级就够了,底层类,基本底层的模块类,组合模块的应用类。如果是一个比较大型的网站,分的层级会更多。

五、数据库类要规划好

这一点很重要,理想方式是所有sql执行走一个类。为什么要这样,这是为长远打算,将来做了mysql集群,或者是用了memcache之类的nosql,转换起来也方便,如果sql到处都有,那就郁闷了。

六、多个二级域名下的类共用

什么意思呢,例如一个网站有,BBS,门户,微博,正常思维(discuz除外,所以二级域名指向同一目录)是对应三个目录,也就是有三个documentroot,共用类最好是脱离web的目录而存在。这样类可以共用,可以减少代码冗余。

七、使用模板插件

php代码和html代码混着写,我觉得不好,特别是网站改版,会让你崩溃的。现在php代码和html分离的模板很多,例如:smarty

八、js代码规划

smarty可以使php和html分离,jquery等类似的js插件可以使js和html分离。js也是一门开发语言,基于JS的插件也可以理解成一门语言,都有面向对象和面向过程之分。如果不规划好,html页面会很乱,查看源码会发现,一半html,一半JS。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
一个程序下载的管理程序(四)
Oct 09 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
Jun 09 PHP
php 过滤英文标点符号及过滤中文标点符号代码
Jun 12 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
PHP操作MySQL事务实例
Nov 05 PHP
yii的CURD操作实例详解
Dec 04 PHP
php设计模式之单例模式实例分析
Feb 25 PHP
smarty高级特性之对象的使用方法
Dec 25 PHP
微信支付开发订单查询实例
Jul 12 PHP
PHP请求Socket接口测试实例
Aug 12 PHP
php微信开发接入
Aug 27 PHP
使用WAMP搭建PHP本地开发环境
May 10 PHP
详解js异步文件加载器
Jan 24 #PHP
PHP导出Excel实例讲解
Jan 24 #PHP
PHP验证码生成原理和实现
Jan 24 #PHP
详解PHP对象的串行化与反串行化
Jan 24 #PHP
php上传图片获取路径及给表单字段赋值的方法
Jan 23 #PHP
高质量PHP代码的50个实用技巧必备(下)
Jan 22 #PHP
php使用timthumb生成缩略图的方法
Jan 22 #PHP
You might like
DC的38部超级英雄动画电影
2020/03/03 欧美动漫
用PHP将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
php数组指针操作详解
2017/02/14 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
2020/12/30 PHP
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
javascript getElementsByClassName函数
2010/04/01 Javascript
jquery插件之easing 动态菜单
2010/08/21 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
ajax与302响应代码测试
2013/10/23 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
微信小程序当前时间时段选择器插件使用方法详解
2018/12/28 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
使用python判断jpeg图片的完整性实例
2019/06/10 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
Keras在训练期间可视化训练误差和测试误差实例
2020/06/16 Python
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
阿联酋手表和配饰购物网站:Rivolishop
2019/11/25 全球购物
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
受欢迎的大学生自我评价
2013/12/05 职场文书
教师节倡议书
2014/08/30 职场文书
2014年双拥工作总结
2014/11/21 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript