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定时计划任务的实现方法详解
Jun 06 PHP
解析php 版获取重定向后的地址(代码)
Jun 26 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
PHP中iconv函数转码时截断字符问题的解决方法
Jan 21 PHP
Laravel 中获取上一篇和下一篇数据
Jul 27 PHP
PHP实现QQ登录实例代码
Jan 14 PHP
PHP实现递归目录的5种方法
Oct 27 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 29 PHP
PHP经典设计模式之依赖注入定义与用法详解
May 21 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
Mar 16 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
PHP5中虚函数的实现方法分享
2011/04/20 PHP
php简单统计在线人数的方法
2016/05/10 PHP
PHP7常量数组用法分析
2016/09/26 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
2020/01/26 PHP
jquery isType() 类型判断代码
2011/02/14 Javascript
微信JS接口汇总及使用详解
2015/01/09 Javascript
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
关于cookie的初识和运用(js和jq)
2016/04/07 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
vue将后台数据时间戳转换成日期格式
2019/07/31 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
vue跳转页面的几种方法(推荐)
2020/03/26 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
Python中xml和json格式相互转换操作示例
2018/12/05 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
2020/06/11 Python
python 中 .py文件 转 .pyd文件的操作
2021/03/04 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
CSS书写规范、顺序和命名规则
2014/03/06 HTML / CSS
在职人员函授期间自我评价分享
2013/11/08 职场文书
店长岗位的工作内容
2013/11/12 职场文书
会计毕业自我鉴定
2014/02/05 职场文书
环保建议书作文
2014/03/12 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
公司离职证明范本(5篇)
2014/09/17 职场文书
MySQL数字类型自增的坑
2021/05/07 MySQL
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
Java常用函数式接口总结
2021/06/29 Java/Android
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python