ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:26.83KB ,
资源ID:4936054      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4936054.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PHP开发规范.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

PHP开发规范.docx

1、PHP开发规范互联在线PHP开发规范v1.01引言1.1定义及缩略语缩略词说明技术部运维中心提供的研发平台,提供框架、公共基础组件、公共业务组件加速业务的日常研发工作1.2目的本规范由编程原则组成,融合并提炼了开发人员长时间积累下来的成熟经验,意在帮助形成良好一致的编程风格。以达到事半功倍的效果,如果有需要本文档会不定期更新。 1.3适用范围如无特殊说明,以下规则要求完全适用于基于PHP开发的应用,同时也可大部分适用于部门其他PHP项目。1.4标准化作用当一个软件项目尝试着遵守公共一致的标准时,可以使参与项目的开发人员更容易了解项目中的代码、弄清程序的状况。使新的参与者可以很快的适应环境,防止

2、部分参与者出于节省时间的需要,自创一套风格并养成终生的习惯,导致其它人在阅读时浪费过多的时间和精力。而且在一致的环境下,也可以减少编码出错的机会。缺陷是由于每个人的标准不同,所以需要一段时间来适应和改变自己的编码风格,暂时性的降底了工作效率。从使项目长远健康的发展以及后期更高的团队工作效率来考虑暂时的工作效率降低是值得的,也是必须要经过的一个过程。标准不是项目成功的关键,但可以帮助我们在团队协作中有更高的效率并且更加顺利的完成既定的任务。 1)程序员可以了解任何代码,弄清程序的状况 2)新人可以很快的适应环境 3)防止新接触PHP的开发出于节省时间的需要,自创一套风格并养成终生的习惯 4)防止

3、新接触PHP的开发一次次的犯同样的错误 5)在一致的环境下,可以减少犯错的机会 2PHP编码规范2.1标签PHP程序可以使用或来界定 PHP 代码,在HTML页面中嵌入纯变量时,可以使用这样的形式,不可使用其他的标签变种。纯PHP类文件,文件最后一个?省略。2.2编码PHP代码必须只使用不带BOM的UTF-8。2.3注释1)单行注释:在语句结尾用双反斜杠”/ “注释2)多行注释:多行注视以”/*”或“/*”符号开头,以”*/ “符号作为注释结束符。需要生成文档的注释必须是以“/*”开头,以“*/”结尾。主流的IDE开发工具(如Eclipse,Zend)会用不同的颜色来区分下面的几种注释。2.3

4、.1文件注释/* *(简述,用在索引列表中) * * 详细的功能描述(可略) * * copyright Copyright© 2013, 公司名或作者名 * author $AUTHOR * version $Id: $FILE_NAME, v $VERSION $TIME $AUTHOR Exp $ * */2.3.2类注释/* *(概要) * * 详细的功能描述* * property 类型 $prop 属性描述* * author $AUTHOR * package ponents(参见路径别名)* */2.3.3方法注释/* * 功能描述* * param 类型 $fiel

5、ds 描述 * * return 类型 描述*/2.3.4属性注释/* * var 类型 $fields 描述 */ 2.3.5其它1)适当的使用HTML标记语言来美化文档。不管是生成HTML格式还是CHM格式的文档手册,文档工具都是先生成HTML文档页面,所以适当的使用或标签可以美化文档,方便阅读。2)public和private方法:一般情况下,private私有方法不会暴露给其他开发人员,所以private方法的注释一般以“/*”开头,而public方法以“/*”开头。2.4命名规则Pascal命名法:所有单词第一个字母大写,其他字母小写。Camel命名法(驼峰命名法):除了第一个单词,

6、所有单词第一个字母大写,其他字母小写。采用英文单词或其组合,便于记忆和阅读,切忌使用汉语拼音来命名。2.4.1文件1)类文件的名称和类名一致,如类HelloWorld,相应的文件名为HelloWorld.php2)配置文件名小写,如 config.php3)嵌套php的view文件使用Camel命名法,第一个字母小写,其他单词的第一个字母大写。如:addApp.php2.4.2类类命名采用Pascal命名方法,类名应该和文件名相匹配。2.4.3函数/方法通常方法一般为一个动作或行为动词,函数/方法的命名采用Camel命名方法functionrun()functionrunFast()funct

7、iongetBackground()尽量用有意义,描述性的词语来命名用checkForErrors()代替errorCheck(),用dumpDataToFile()代替dataFile()。有时前缀名是有用的:is-含义为问一个关于某样事物的问题。无论何时,当人们看到is就会知道这是一个问题。get-含义为取得一个数值。set-含义为设定一个数值例如:isHitRetryLimit内部成员函数命名应该是以“_”开始:function_isUserTicket();2.4.4变量名1)用有意义的,描述性的词语来命名变量2)别用缩写。用name,address,salary等代替nam,addr

8、,sal全局变量以”g_”开头3)别使用单个字母的变量象i,n,x等.使用index,temp等,用于循环迭代的变量例外:for ($i = 0; $i 必须省略2.5.2行1)行长度不可有硬限制。2)行实际长度不应超过80个字符;较长的行应当被拆分成多个不超过80个字符的后续行。3)空行可以用来改善可读性和区分相关的代码块。4)一行不应多于一个语句。2.5.3缩进每个缩进的单位约定是4个空格的缩进,并且不可使用制表符作为缩进,需每个参与项目的开发人员在编辑器(Eclipse、EditPlus、Zend Studio等)中进行强制设定将TAB转化为4个空格,以防在编写代码时遗忘而造成格式上的不

9、规范。 2.5.4控制结构对于控制结构的样式规则概括如下:1)控制结构关键词之后必须有一个空格2)左括号之后不可有空格3)右括号之前不可有空格4)在右括号和左花括号之间必须有一个空格5)代码主体必须有一次缩进6)右花括号必须主体的下一行每个结构的主体必须被括在花括号里。这结构看上去更标准化,并且当加新行的时候可以减少引入错误的可能性。2.5.4.1if,elseif, else一个if结构看起来应该像下面这样。注意括号,空格,花括号的位置;并且else和elseif和前一个主体的右花括号在同一行。?phpif ($expr1) / if body elseif ($expr2) / elsei

10、f body else / else body;关键词elseif应该替代else if使用以保持所有的控制关键词像一个单词。2.5.4.2switch, case一个switch结构看起来应该像下面这样。注意括号,空格和花括号。case语句必须从switch处缩进,并且break关键字(或其他中止关键字)必须和case主体缩进在同级。如果一个非空的case主体往下落空则必须有一个类似/ no break的注释。?phpswitch ($expr) case 0: echo First case, with a break; break; case 1: echo Second case, w

11、hich falls through; / no break case 2: case 3: case 4: echo Third case, return instead of break; return; default: echo Default case; break;2.5.4.3while, do while一个while语句看起来应该像下面这样。注意括号,空格和花括号的位置。?phpwhile ($expr) / structure body同样的,一个do while语句看起来应该像下面这样。注意括号,空格和花括号的位置。?phpdo / structure body; whi

12、le ($expr);2.5.4.4for一个for语句看起来应该像下面这样。注意括号,空格和花括号的位置。?phpfor ($i = 0; $i 10; $i+) / for body2.5.4.5foreach一个foreach语句看起来应该像下面这样。注意括号,空格和花括号的位置。 $value) / foreach body2.5.4.6try, catch一个try catch语句看起来应该像下面这样。注意括号,空格和花括号的位置。”结束标记去掉?phpclass Foo body4)一个类的extends和implements关键词必须和类名在同一行。class ClassName

13、 extends ParentClass implements ArrayAccess, Countable / constants, properties, methods5)implements一个列表可以被拆分为多个有一次缩进的后续行。如果这么做,列表的第一项必须要放在下一行,并且每行必须只有一个接口。class ClassName extends ParentClass implements ArrayAccess, Countable, Serializable / constants, properties, methods2.5.10属性1)所有的属性必须声明可见性。2)var关

14、键词不可用来声明属性。3)一个语句不可声明多个属性。4)属性名称可以使用单个下划线作为前缀来表明保护或私有的可见性。class ClassNamepublic $foo = null;private $_bar = 1;2.5.11方法1)所有的方法必须声明可见性。2)方法名不应只使用单个下划线来表明是保护或私有的可见性。3)方法名在声明之后不可跟随一个空格。左花括号必须放在下面自成一行,并且右花括号必须放在方法主体的下面自成一行。左括号后面不可有空格,右括号前面不可有空格。4)一个方法定义看来应该像下面这样。 注意括号,逗号,空格和花括号:5)在参数列表中,逗号之前不可有空格,逗号之后必须要

15、有一个空格。6)方法中有默认值的参数必须放在参数列表的最后面。class ClassName public function fooBarBaz($arg1, &$arg2, $arg3 = ) / method body 7)参数列表可以被分为多个有一次缩进的多个后续行。如果这么做,列表的第一项必须放在下一行,并且每行必须只放一个参数。8)当参数列表被分为多行,右括号和左花括号必须夹带一个空格放在一起自成一行。class ClassName public function aVeryLongMethodName( ClassTypeHint $arg1, &$arg2, array $arg

16、3 = ) / method body 9)如果存在,abstract和final声明必须放在可见性声明前面。10)如果存在,static声明必须跟着可见性声明。3数据库命名规范3.1命名规范数据库的所有表(Table)、视图(View)、索引(Index)、触发器(Trigger)、函数(Function)和存储过程(Store Procedure)均应遵循以下命名规范。1)命名统一用大写2)命名只能由小写字母和数字构成,并且只能是以小写字母打头3)命名应采用能够准确反映其中文含义的英文单词或英文单词缩写构成,避免出现英文单词和汉语拼音混用的局面4)命名长度不可以超过25个字符(表名尽量保持

17、在20个字符的长度,然后再其上建立索引、主键、触发器等等的时候,便于加扩展信息)5)名称的各部分之间以_(下划线)连接6)字段如有相同定义,应该用相同命名7)命名应避免用关键字,参见附录一关键字列表3.2实体命名实体(包括库表、视图、函数和索引等)命名结构如下: prefix_module_body_suffix1)为前缀名,表示数据库对象的类型2)为模块名,按应用模块进行分类,为可选项3)为主体名,应该能够清楚地说明对象的含义4)是后缀名,提供特效的含义,比如在该对象需分表存放时使用,如按月分开存放的表,为可选项。3.2.1前缀命名前缀数据库对象t表(Table)v视图(View)tri触发

18、器(Trigger)p存储过程(Procedure)tt临时表(Temporary Table)idx索引(Index)uk唯一索引(Unique Index)pk主键(Primary Key)fk外键(Foreign Key)f函数(Function)3.2.2后缀命名后缀定义_HIS历史表_LOG流水表_MAP对照表_REL关系表_YYYYMMDD因数据量庞大,需按日分开存放的表_YYYYMM因数据量庞大,需按月分开存放的表3.3字段命名字段命名结构如下: prefix_body_suffix1)为前缀名,为必填项,必须为“f”。2)为主体名,应该能够清楚地说明对象的含义3)是后缀名,提供

19、特效的含义,为可选项。3.3.1后缀命名以下是一些特别的后缀,代表了这个字段特效的含义。在其他的情况,应避免使用以下的后缀。后缀定义_DESC参数表内的描叙字段一般来讲是VARCHAR(255)_FLAG只可能是True或False的字段一般来讲是TINYINT(1)_ID标识字段,一般来讲是INT(11)_TYPE类型字段,一般来讲是CHAR(1)3.4字段类型一般来说, 在保证正确性的前提下,尽量使用最小的数据类型来存储和表示数据。 小的数据类型一般比大的更快,因为小的数据类型占用的磁盘空间, 内存和cup缓存都相对小,需要的cpu处理也要相对少; 这个原则很重要, 但是设计的时候也不要低

20、估需要存储的数据的数据范围。简单的数据类型需要的cup处理周期更少,比如:对整数的处理比字符串处理更容易, 因为字符集和排序规则使得字符串比较复杂化了, 两个典型例子是: 使用mysql的内嵌数据类型来存储日期和时间而不是字符串,使用整数存储Ip地址而不是字符串。3.4.1数值类型1)非万不得已不要使用DOUBLE,不仅仅只是存储长度的问题,同时还会存在精确性的问题。2)固定精度的小数,也不建议使用DECIMAL,建议乘以固定倍数转换成整数存储,可以大大节省存储空间,且不会带来任何附加维护成本。3)对于整数的存储,在数据量较大的情况下,建议区分开 TINYINT / INT / BIGINT

21、的选择,因为三者所占用的存储空间也有很大的差别,能确定不会使用负数的字段,建议添加unsigned定义。3.4.2字符类型1)非万不得已不要使用 TEXT 数据类型,其处理方式决定了他的性能要低于char或者是varchar类型的处理。2)定长字段,建议使用 CHAR 类型,不定长字段尽量使用 VARCHAR,且仅仅设定适当的最大长度,而不是非常随意的给一个很大的最大长度限定,因为不同的长度范围,MySQL也会有不一样的存储处理。3.4.3时间类型1)尽量使用TIMESTAMP类型,因为其存储空间只需要 DATETIME 类型的一半。2)对于只需要精确到某一天的数据类型,建议使用DATE类型,

22、因为他的存储空间只需要3个字节,比TIMESTAMP还少。3)不建议通过INT类型类存储一个unix timestamp 的值,因为这太不直观,会给维护带来不必要的麻烦,同时还不会带来任何好处。3.4.4ENUM&SET1)对于状态字段,可以尝试使用 ENUM 来存放,因为可以极大的降低存储空间。2)如果是存放可预先定义的属性数据,可以尝试使用SET类型,即使存在多种属性,同样可以游刃有余,同时还可以节省不小的存储空间。3.4.5LOB 类型强烈反对在数据库中存放 LOB 类型数据3.5表结构设计3.5.1适度冗余不需要一定遵守范式理论,适度的冗余,让Query尽量减少Join3.5.2尽量使

23、用NOT NULL尽可能把字段定义成NOT NULL,许多表包含一些字段允许空的字段,即使应用需求不需要存储NULL的数据,因为允许字段为NULL是缺省的。允许NULL的字段会占用掉更多的存储空间和花掉更多的cpu处理,当为一个可为空的字段建立索引时, 需要为每项分配一个额外的字节。即使遇到不需要存储值到某个字段,也应当考虑不使用NULL,而是考虑使用0,一个特殊值或者空串来代替。3.5.3索引1)唯一确定一条记录的一个字段或多个字段要建立主键或者唯一索引,不能唯一确定一条记录,为了提高查询效率建普通索引2)对于取值不能重复,经常作为查询条件的字段,应该建唯一索引(主键默认唯一索引),并且将查

24、询条件中该字段的条件置于第一个位置。没有必要再建立与该字段有关的联合索引。3)对于经常查询的字段,其值不唯一,也应该考虑建立普通索引,查询语句中该字段条件置于第一个位置,对联合索引处理的方法同样。4)需要联合索引(或联合主键)的数据库要注意索引的顺序。SQL语句中的匹配条件也要跟索引的顺序保持一致。4附件4.1附录一:MYSQL保留字保留字保留字保留字ADDALLALTERANALYZEANDASASCAUTO_INCREMENTBDBBEFOREBERKELEYDBBETWEENBIGINTBINARYBLOBBOTHBTREEBYCASCADECASECHANGECHARCHARACTER

25、CHECKCOLLATECOLUMNCOLUMNSCONSTRAINTCREATECROSSCURRENT_DATECURRENT_TIMECURRENT_TIMESTAMPDATABASEDATABASESDAY_HOURDAY_MINUTEDAY_SECONDDECDECIMALDEFAULTDELAYEDDELETEDESCDESCRIBEDISTINCTDISTINCTROWDIVDOUBLEDROPELSEENCLOSEDERRORSESCAPEDEXISTSEXPLAINFALSEFIELDSFLOATFORFORCEFOREIGNFROMFULLTEXTFUNCTIONGRANT

26、GROUPHASHHAVINGHIGH_PRIORITYHOUR_MINUTEHOUR_SECONDIFIGNOREININDEXINFILEINNERINNODBINSERTINTINTEGERINTERVALINTOISJOINKEYKEYSKILLLEADINGLEFTLIKELIMITLINESLOADLOCALTIMELOCALTIMESTAMPLOCKLONGLONGBLOBLONGTEXTLOW_PRIORITYMASTER_SERVER_IDMATCHMEDIUMBLOBMEDIUMINTMEDIUMTEXTMIDDLEINTMINUTE_SECONDMODMRG_MYISAMNATURALNOTNULLNUMERICONOPTIMIZEOPTIONOPTIONALLYORORDEROUTEROUTFILEPRECISIONPRIMARYPRIVILEGESPROCEDUREPURGEREADREALREFERENCESREGEXPRENAMEREPLACEREQUIRERESTRICTRETURNSREVOKERIGHTRLIKERTREESELECTSETSHOWSMALLINT

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1