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

本文总结讲述了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面向对象程序设计入门教程》及《php优秀开发框架总结》

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

(0)

相关推荐

  • php抽象类使用要点与注意事项分析

    本文实例分析了php抽象类使用要点与注意事项.分享给大家供大家参考.具体分析如下: php抽象类使用要点与注意事项如下: 1.用 abstract 来修饰一个类,那么这个类就是抽象类:抽象类绝对不能被实例化,即$abc = new 抽象类名();会报错. 2.用abstract 来修饰一个方法,那么该方法就是抽象方法: 3.如果类中有一个抽象方法,那么该类就必须定义为抽象类:但反过来,抽象类里并不一定要有抽象方法.另外,抽象类里也可以有普通方法. 4.抽象方法不能有方法体.即abstract f

  • PHP callback函数使用方法和注意事项

    在PHP中有些诸如 call_user_function() 或 usort() 的函数接受用户自定义的函数作为一个参数.Callback 函数不仅可以是一个简单的函数,它还可以是一个对象的方法,包括静态类的方法. 一个 PHP 函数用函数名字符串来传递.您可以传递任何内建的或者用户自定义的函数,除了 array(), echo(), empty(), eval(), exit(), isset(), list(), print() 和 unset(). 一个对象的方法以数组的形式来传递,数组的

  • ThinkPHP入口文件设置及相关注意事项分析

    本文实例分析了ThinkPHP入口文件设置及相关注意事项.分享给大家供大家参考.具体如下: 复制代码 代码如下: <?php  /*第一层意义:   *定义的是与thinkphp有关的核心框架文件目录路径,它可以通过这一个常量在以后运行的时候都去找这个路径,   *确保在以后运行过程中,绝对不会出现问题的(绝对不会对整个项目运行加载路径产生错误):   *第二层意义:   *做一个操作(放跳墙),是防止用直接访问我们的敏感文件,怎么避免呢,我就可以做一个页面包含整个   *敏感页面,用户的访问必

  • 基于PHP编程注意事项的小结

     1.php隐性的三元操作符(?:)优先级问题: 例1: 复制代码 代码如下: $person = $who or $person = "laruence"; //实际上是等同于: $person = empty($who)? "laruence" : $who; 例2 复制代码 代码如下: $arr = array(1=>1,3=>3):      $i = 2;      $a = 'test' . isset($arr[$i]) ? $arr[$i

  • 基于php实现长连接的方法与注意事项的问题

    php可以通过set_time_limit(0);来取消php脚步超时限制,从而达到长连接的效果. 例子代码如下: 复制代码 代码如下: <?php echo "每隔3秒输出一次<br />"; set_time_limit(0); //保证php程序运行不超时退出 while(1) { echo date("H:i:s")."<br />"; ob_flush(); flush(); //刷新并输出PHP缓冲数据

  • PHP使用静态方法的几个注意事项

    本文实例介绍了PHP使用静态方法的几个常见注意事项.分享给大家供大家参考.具体方法如下: 1. 即使类中的方法并未用static声明,但其未使用到可改变的类成员变量,在外部仍可用操作符::来调用: 2. 以静态方式(用::操作符)调用的方法中$this的取值是由调用时的上下文决定的!而不是定义他的类!! 例如以下的代码: <?php class TestClass1 { public $normal_v = 'normal_v from TestClass1'; public static $S

  • PHP开发注意事项总结

    1.使用内嵌的HTML代码,而不是PHP的echo语句. 因为PHP是一门嵌入式Web编程语言,可以将HTML代码和PHP代码相互嵌入.但是很多程序员担心在HTML代码中过多的使用""嵌入PHP代码会多次调用PHP解释器,从而降低了PHP代码的运行速度,所以宁愿使用PHP的echo语句来输出HTML代码,而不直接使用HTML代码.但事实却恰恰相反.每一个PHP页面只调用一次PHP解释器来解释所有的PHP代码,所以,只在需要时才嵌入PHP代码,而大多数的时候直接使用HTML代码输入结果,

  • php数组合并array_merge()函数使用注意事项

    1.array_merge()合并 例子 $array = array('a'=>'bb'); $array2 = array('b'=>'cc'); $array3 = array_merge($array,$array2); 输出结果为 Array ( [a] => bb [b] => cc ) 上面因为都是数组就没有问题了,假如我们把$array 设置不是数组看看什么情况 $array = 1;//array('a'=>'bb'); $array2 = array('b

  • php5.3 注意事项说明

    php5.3新特性1.支持命名空间(namespace)5.3以前 复制代码 代码如下: <?phpclass Zend_Db_Table_Select {//表示当前这个类文件位于Zend/Db/Table下} 5.3 复制代码 代码如下: <?phpnamespace Zend/Db/Tableclass Select {} 2.支持延迟静态绑定5.3以前(__CLASS__获得类名)self::who() 复制代码 代码如下: <?phpclass A {    public st

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

    本文总结讲述了php代码架构的八点注意事项.分享给大家供大家参考,具体如下: 写代码写了6年多了,看看以前的架构,看看现在的架构.都有一些不足的地方.不管怎么样,都一直在改进.说实话不太喜欢用框架这类东西,基本上所有的框架都大同小异,差不了多少,要用话的,你还要去了解思想,目录结构,文件调用,文件命名,代码规范等,挺浪费时间的.构架能满足很大一部分的要求,满足的人越多性能越差,这也是我不喜欢用架构的一个主要原因.下面说一下,代码架构方面的一些心德. 一.面向对象为主,面向过程为辅 php4是面向

  • WCF如何使用动态代理精简代码架构

    使用Castle.Core.dll实现,核心代码是使用Castle.DynamicProxy.ProxyGenerator类的CreateInterfaceProxyWithoutTarget方法动态创建代理对象 NuGet上面Castle.Core的下载量1.78亿之多 一.重构前的项目代码 重构前的项目代码共7层代码,其中WCF服务端3层,WCF接口层1层,客户端3层,共7层 1.服务端WCF服务层SunCreate.InfoPlatform.Server.Service 2.服务端数据库访

  • python http服务flask架构实用代码详解分析

    依赖库 flask安装,使用豆瓣源加速. pip install flask -i https://pypi.douban.com/simple gevent安装,使用豆瓣源加速. pip install gevent -i https://pypi.douban.com/simple 代码 #!/user/bin/env python # coding=utf-8 """ @project : TestDemo @author : huyi @file : app.py @

  • 使用JavaScript制作待办事项列表的示例代码

    目录 JavaScript待办事项列表 如何制作JavaScript待办事项列表 第 1 步: 项目的基本结构 第 2 步: 使用 HTML 创建一个输入位置 第 3 步: 制作查看 Todo 文本的列表 第 4 步: 使用 JavaScript 激活待办事项列表 JavaScript 解释 JavaScript待办事项列表 我在此处展示了有关如何使用 JavaScript创建待办事项列表 HTML 的完整信息和教程.我借助HTML 和 CSS来设计它.在 JavaScript 的帮助下实现.

  • ASP.NET通用权限验证的实现代码思路

    本篇介绍通用权限验证的实现代码思路,总共分为导入参数.解析XML.根据XML配置进行处理.返回结果. 代码架构图 一. 类介绍 1.SFWebPermission:实现IHttpModule接口,权限验证入口: 2.SFConfig:导入XML配置类: 3.SFPermission:解析XML配置进行权限验证: 4.SFAccessOper:数据库操作类: 5.SFPermissionSQL:XML节点实体类: 6.SFParameter:XML节点实体类: 7.SFCommon:系统变量定义类

  • Android视频点播的实现代码(边播边缓存)

    简述 一些知名的视频app客户端(优酷,爱奇艺)播放视频的时候都有一些缓存进度(二级进度缓存),还有一些短视频app,都有边播边缓的处理.还有就是当文件缓存完毕了再次播放的话就不再请求网络了直接播放本地文件了.既节省了流程又提高了加载速度. 今天我们就是来研究讨论实现这个边播边缓存的框架,因为它不和任何的业务逻辑耦合. 开源的项目 目前比较好的开源项目是:https://github.com/danikula/AndroidVideoCache 代码的架构写的也很不错,网络用的httpurlco

  • 用ES6写全屏滚动插件的示例代码

    这篇文章将介绍如何使用原生 JS (主要使用 ES6 语法)实现全屏滚动插件,兼容 IE 10+.手机触屏,Mac 触摸板优化,支持自定义页面动画,压缩后 gzip 文件只有 2k.完整源码在这 pure_full_page,点这查看demo. 1)前面的话 现在已经有很多全屏滚动插件了,比如著名的 fullPage ,那为什么还要自己造轮子呢? 现有轮子有以下问题: 首先,最大的问题是最流行的几个插件都依赖 jQuery,这意味着在使用 React 或者 Vue 的项目中使用他们是一件十分蛋疼

  • C#调用RabbitMQ实现消息队列的示例代码

    前言 我在刚接触使用中间件的时候,发现,中间件的使用并不是最难的,反而是中间件的下载,安装,配置才是最难的. 所以,这篇文章我们从头开始学习RabbitMq,真正的从头开始. 关于消息队列 其实消息队列没有那么神秘,我们这样想一下,用户访问网站,最终是要将数据以HTTP的协议的方式,通过网络传输到主机的某个端口上的. 那么,接收数据的方式是什么呢?自然是端口监听啦. 那消息队列是什么就很好解释了? 它就是端口监听,接到数据后,将数据排列起来. 那这件事,我们不用中间件能做吗? 当然能做啦,写个T

  • 教你如何写出可维护的JS代码

    什么是可维护代码 可维护代码需要遵循以下几个特点. 1.可理解性-其他人可以接手代码并理解它的意图和一般途径. 2.直观性-代码中的东西一看就明白,不管其操作过程有多复杂. 3.可适应性-代码以一种数据变化不要求完全重写的方法撰写. 4.可扩展性-在代码架构上已考虑在未来允许对核心功能进行扩展. 5.可调试性-当有地方出错时,代码可以给你足够的信息快速直接找出问题的所在. 代码约定 一种让代码变得可维护的简单途径是形成一套JavaScript代码的书写约定.由于JavaScript的可适应性,代

  • 详解多云架构下的JAVA微服务技术解析

    微服务生态 微服务生态本质上是一种微服务架构模式的实现,包括微服务开发SDK,以及微服务基础设施. 目前比较成熟的 JAVA 微服务生态包括 servicecomb(华为), spring-cloud (Pivotal), dubbo(阿里), tsf(腾讯)等.gRPC.Thrift 等也用于内部服务之间的通信,但是微服务基础设施比较欠缺. 核心的微服务基础设施包括:注册中心.配置中心.应用网关.此外,分布式事物管理.计划任务.调用链跟踪系统等也是微服务基础设施的组成部分.完整的微服务基础实施

随机推荐