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 相关文章推荐
PHP新手上路(二)
Oct 09 PHP
php smarty模版引擎中的缓存应用
Dec 02 PHP
PHP 类商品秒杀计时实现代码
May 05 PHP
Uncaught exception com_exception with message Failed to create COM object
Jan 11 PHP
php对大文件进行读取操作的实现代码
Jan 23 PHP
基于session_unset与session_destroy的区别详解
Jun 03 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
Jan 31 PHP
深入分析PHP引用(&)
Sep 04 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
Jan 19 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
Oct 17 PHP
ecshop添加菜单及权限分配问题
Nov 21 PHP
laravel框架中间件简单使用方法示例
Jan 25 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
PHP通用检测函数集合
2006/11/25 PHP
php中根据变量的类型 选择echo或dump
2012/07/05 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
2013/07/19 PHP
php实现上传图片生成缩略图示例
2014/04/13 PHP
php实现parent调用父类的构造方法与被覆写的方法
2015/02/11 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
Swoole实现异步投递task任务案例详解
2019/04/02 PHP
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
jquery利用拖拽方式在图片上添加热链接
2015/11/24 Javascript
jquery实现具有嵌套功能的选项卡
2016/02/12 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
详解jQuery选择器
2016/12/21 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
Vue.js添加组件操作示例
2018/06/13 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
详解vue项目中实现图片裁剪功能
2019/06/07 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
vue中h5端打开app(判断是安卓还是苹果)
2021/02/26 Vue.js
Python实现的tab文件操作类分享
2014/11/20 Python
在RedHat系Linux上部署Python的Celery框架的教程
2015/04/07 Python
python实现关键词提取的示例讲解
2018/04/28 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
python实现发送QQ邮件(可加附件)
2020/12/23 Python
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
个人现实表现材料
2014/02/04 职场文书
主题教育活动总结
2014/05/05 职场文书
中层领导干部群众路线对照检查材料思想汇报
2014/10/02 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android
DE1103使用报告
2022/04/05 无线电