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 相关文章推荐
PHP4实际应用经验篇(4)
Oct 09 PHP
php 图片上添加透明度渐变的效果
Jun 29 PHP
PHP函数常用用法小结
Feb 08 PHP
php不用内置函数对数组排序的两个算法代码
Feb 08 PHP
php+mysql 实现身份验证代码
Mar 24 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
May 18 PHP
php语言流程控制中的主动与被动
Nov 05 PHP
thinkphp中连接oracle时封装方法无法用的解决办法
Jun 17 PHP
PHP实现删除非站内外部链接实例代码
Jun 17 PHP
详解PHP中的状态模式编程
Aug 11 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
Apr 23 PHP
php使用scandir()函数扫描指定目录下所有文件示例
Jun 08 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
ajax实现无刷新分页(php)
2010/07/18 PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
2011/04/17 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
图片旋转、鼠标滚轮缩放、镜像、切换图片js代码
2020/12/13 Javascript
深入理解JavaScript中的预解析
2017/01/04 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
React Native日期时间选择组件的示例代码
2018/04/27 Javascript
jQuery实现列表的增加和删除功能
2018/06/14 jQuery
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
nodejs提示:cross-device link not permitted, rename错误的解决方法
2019/06/10 NodeJs
基于node+vue实现简单的WebSocket聊天功能
2020/02/01 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
vue-model实现简易计算器
2020/08/17 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
Python中设置变量访问权限的方法
2015/04/27 Python
Python numpy生成矩阵、串联矩阵代码分享
2017/12/04 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
Python WEB应用部署的实现方法
2019/01/02 Python
python 实现单通道转3通道
2019/12/03 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
Python os库常用操作代码汇总
2020/11/03 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
CSS实现半透明边框与多重边框的场景分析
2019/11/13 HTML / CSS
湖南卫视在线视频媒体平台:芒果TV
2019/10/30 全球购物
我的求职计划书
2014/01/10 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS
Python中request的基本使用解决乱码问题
2022/04/12 Python