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中批量删除Mysql中相同前缀的数据表的代码
Jul 01 PHP
PHP 异步执行方法,模拟多线程的应用分析
Jun 03 PHP
php生成图形验证码几种方法小结
Aug 15 PHP
php对二维数组进行排序的简单实例
Dec 19 PHP
yii框架builder、update、delete使用方法
Apr 30 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
May 23 PHP
php实现的支持断点续传的文件下载类
Sep 23 PHP
php获取根域名方法汇总
Oct 28 PHP
php中base_convert()进制数字转换函数实例
Nov 20 PHP
PHP基于MySQL数据库实现对象持久层的方法
Jun 17 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
PHP容器类的两种实现方式示例
Jul 24 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
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
jQuery 操作XML入门
2008/12/25 Javascript
JS 控制CSS样式表
2009/08/20 Javascript
基于jquery的气泡提示效果
2010/05/31 Javascript
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
js实现微信分享代码
2020/10/11 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
js模糊查询实例分享
2016/12/26 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
windows下vue-cli导入bootstrap样式
2017/04/25 Javascript
AngularJS中使用three.js的实例详解
2017/07/21 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
vue-cli 3.x 修改dist路径的方法
2018/09/19 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
Python多线程爬虫简单示例
2016/03/04 Python
Python语法分析之字符串格式化
2019/06/13 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
Django通过json格式收集主机信息
2020/05/29 Python
Python学习之os模块及用法
2020/06/03 Python
python 19个值得学习的编程技巧
2020/08/15 Python
css3 position fixed固定居中问题解决方案
2014/08/19 HTML / CSS
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
我们是伦敦女孩:WalG
2018/01/08 全球购物
UNIX命令速查表
2012/03/10 面试题
希特勒经典演讲稿
2014/05/19 职场文书
学校志愿者活动总结
2014/06/27 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书