版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PHP语言编写规范第1章命名规范1.1变量1.1.1全局变量全局变量使用$g_开头,如$g_data_list。1.1.2一般变量一般的变量使用小写字母命名,单词之间使用下划线分隔。变量名字应当使用名词或者形容词+名词的方式。如$value,$new_value。1.1.3临时变量不要将在循环中频繁使用的临时变量如$i,$j等用于其它用途。1.2函数函数采用小写字母命名,单词之间使用下划线分隔。函数的命名建议使用动词+名词的方式,如get_user_img。完毕一组功能的函数放到一个文献中,存放函数的文献采用function_name.func.php命名。1.3类类使用英文的大小写来分隔单词,涉及首个单词,所有单词的首字母大写,如PageManager;在类中,方法放到属性定义前边、公用方法放到专用方法前边;一般情况下,一个类相应到一个文献;当一些类关系紧密时,可以存放在一个文献中;存放类的文献采用ClassName.class.php方式命名。1.4方法方法使用英文的大小写来分隔单词,除首个单词外,其他单词的首字母大写,如getCurrentPage();不要采用不常用的缩写,如where2go();使用常用的缩写时,只大写首字母,如getHtml()。第2章版式规则2.1语义分隔各个函数、方法之间应当采用空行间隔;同一个函数中联系紧密的语句之间可以不换行,其他情况需要换行。2.2空格规则2.2.1逻辑运算符前后必须加空格对的$a==$b;错误$a==$b;$a==$b;备注-对的$a++;$a–;错误$a++;$a–;备注加一减一运算符不能加空格。2.2.2多个参数分隔时必须加空格对的$g_pro,$g_user,g_show;get_db_info($host,$user,$passwd);错误$g_pro,$g_user,$g_show;get_db_info($host,$user,$passwd);备注-2.2.3语法关键字后必须加空格例如:If,for,while,switch…..对的for($i=0;$i<10;$i++)错误for($i=0;$i<10;$i++)备注-2.3字符串和变量连接规则字符串与变量连接使用’.'号时,必须在’.'前后加空格,使用”号时,必须在变量前后加”{}”。对的$my_name=’file_’.$var1;$my_name=”file_{$var1}”;错误$my_name=”file_’.$var1;$my_name=”file_$var1″;备注-2.4圆括号规则函数名后括号不需要加空格、语法关键字后的括号必须加空格。对的for($i=0;$i<10;$i++)strlen($my_name);错误for($i=0;$i<10;$i++)strlen($my_name);备注-2.5花括号规则花括号必须为上下相应。对的if($a){$b=$a;}错误if($a){$b=$a;}备注-2.6数组定义规则数组定义和使用时中key值前后必须加单引号。PHP代码:下载:php_array.php<?php//对的array('name'=>'','gender'=>'php');//错误array(name=>'',gender=>'php');?>2.7SQL规则在PHP中嵌入的SQL语句关键字所有采用大写;表名和字段名要用反引号(`)引起来以防止由于字段名中包含空格而出现错误;数据值两边用单引号”涉及,并且应保证数据值中的单引号已经转义以防止SQL注入。对的$sql=”SELECT`user`.`name`FROM`user`WHERE`id`=’$id’LIMIT1″;错误$sql=”selectname.userfromnamewhereid=$id”;备注-第3章注释规则3.1一般规则不写不必要的注释;只有当代码不能很好地说明逻辑时,才用注释补充;把注释当作程序的一部分,在编写/维护代码时同时编写/维护注释;注释完全采用PHPDocumentor的规范,以方便用其生成API级文档。3.2具体规则请参见PHPDocumentor手册。下边给出各个部分的注释示范。3.2.1版权信息注释名称版权信息注释示范////+—————————————————-+//|phpDocumentor|//+—————————————————-+//|Copyright(c)2023-2023JoshuaEichorn|//|Email|//|Web|//+—————————————————-+//|ThissourcefileissubjecttoPHPLicense|//+—————————————————-+//备注使用//来标示版权信息,以免和PHPDocumentor的levelDocBlock发生冲突3.2.2文献头注释示例注释名称文献头注释注释示范下载:php_doc.php<?php*Allabstractrepresentationsofinlinetagsareinthisfile*@packagephpDocumentor*@subpackageInlineTags*@sinceseparatefilesinceversion1.2*@version$Id$*/?>备注1文献头注释需要指明所属的包和子包2在@version中加上$ID,以方便使用CVS管理文献3.2.3类注释示例注释名称类注释注释示范下载:php_class.php<?php/***Usethiselementtorepresentan{@}inlinetag}like{@}link}*@seeparserStringWithInlineTags*@packagephpDocumentor*@subpackageInlineTags*@authorGregBeaver<></>*@since1.0rc1*@version$Revision:$*@tutorialinlinetags.pkg*/?>备注-3.2.4类属性注释示例注释名称类属性注释注释示范下载:php.php<?php/**var$type='inlinetag';*Elementtype**Typeisusedbymanyfunctionstoskipthehassleof**<code>*ifget_class($blah)=='parserBlah'*</code>*always"inlinetag"*@varstring*/?>备注-3.2.5函数/类方法注释示例注释名称函数/类方法注释注释示范下载:php.php<?php/**functiongetString()'';*@returnstringalways''*calculatetheshortdescriptionofaDocBlock*@seeparserStringWithInlineTags::getString()*@seeparserStringWithInlineTags::trimmedStrlen()*/{return}?>此条目发表在理论分类目录。将固定链接加入收藏夹。用单引号代替双引号来包含字符串,这样做会更快一些。由于PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。1、假如能将类的方法定义成static,就尽量定义成static,它的速度会提高将近4倍。2、$row[’id’]的速度是$row[id]的7倍。3、echo比print快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo$str1,$str2。4、在执行for循环之前拟定最大循环数,不要每循环一次都计算最大值,最佳运用foreach代替。5、注销那些不用的变量特别是大数组,以便释放内存。6、尽量避免使用__get,__set,__autoload。7、require_once()代价昂贵。8、include文献时尽量使用绝对途径,由于它避免了PHP去include_path里查找文献的速度,解析操作系统途径所需的时间会更少。9、假如你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。10、函数代替正则表达式完毕相同功能。11、str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。12、假如一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。13、使用选择分支语句(译注:即switchcase)好于使用多个if,elseif语句。14、用@屏蔽错误消息的做法非常低效,极其低效。15、打开apache的mod_deflate模块,可以提高网页的浏览速度。16、数据库连接当使用完毕时应关掉,不要用长连接。17、错误消息代价昂贵。18、在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相称。19、递增一个全局变量要比递增一个局部变量慢2倍。20、递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。21、递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。22、仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其限度相称于递增一个局部变量)。PHP大约会检查看是否存在全局变量。23、方法调用看来与类中定义的方法的数量无关,由于我(在测试方法之前和之后都)添加了10个方法,但性能上没有变化。24、派生类中的方法运营起来要快于在基类中定义的同样的方法。25、调用带有一个参数的空函数,其花费的时间相称于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。26、Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。27、除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提高25%至100%的性能,以免去编译开销。28、尽量做缓存,可使用memcached。memcached是一款高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码(OPcode)的缓存很有用,使得脚本不必为每个请求做重新编译。29、当操作字符串并需要检查其长度是否满足某种规定期,你想当然地会使用strlen()函数。此函数执行起来相称快,由于它不做任何计算,只返回在zval结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,由于函数调用会通过诸多环节,如字母小写化(译注:指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。在某些情况下,你可以使用isset()技巧加速执行你的代码。(举例如下)if(strlen($foo)<5){echo“Fooistooshort”$$}(与下面的技巧做比较)if(!isset($foo{5})){echo“Fooistooshort”$$}调用isset()恰巧比strlen()快,由于与后者不同的是,isset()作为一种语言结构,意味着它的执行不需要函数查找和字母小写化。也就是说,事实上在检查字符串长度的顶层代码中你没有花太多开销。34、当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不合用于其他语言,所以请不要修改你的C或Java代码并指望它们能立即变快,没用的。++$i更快是由于它只需要3条指令(opcodes),$i++则需要4条指令。后置递增事实上会产生一个临时变量,这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化解决的一种,正如Zend的PHP优化器所作的那样。牢记这个优化解决不失为一个好主意,由于并不是所有的指令优化器都会做同样的优化解决,并且存在大量没有装配指令优化器的互联网服务提供商(ISPs)和服务器。35、并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。36、并非要用类实现所有的数据结构,数组也很有用。37、不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码?38、当你需要时,你总能把代码分解成方法。39、尽量采用大量的PHP内置函数。40、假如在代码中存在大量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年企业向个人贷款协议模板
- 2024年科研单位协作协议基本模板
- 2024年全球购销协议格式
- 2024年金融借款担保协议模板解析
- 2024年度商业大厦电梯安装工程协议
- 2024零售业退货协议示例
- 2024年武汉住宅装修协议模
- 2024年专业咨询顾问简明协议样式
- 2024年搅拌站承揽协议模板
- DB11∕T 1653-2019 供暖系统能耗指标体系
- 培训教学课件模板
- 降低患者外出检查漏检率-品管圈课件
- 五年级上册生命安全教育全册教案
- 安全标准化安全培训试题附参考答案【考试直接用】
- 第二单元 成长的时空(知识清单)-【上好课】2024-2025学年六年级道德与法治全一册同步课堂(统编版五四制2024)
- 2024年分项、分部、单位工程验收制度范文(二篇)
- 11.20世界慢阻肺日认识你的肺功能预防控制和消除慢阻肺课件
- 【核心素养目标】人教版物理八年级上册 1.3 运动的快慢 教案
- 电子病历质控制度
- 外研版英语2024七年级上册全册单元知识清单(默写版)
- 三年级数学(上)计算题专项练习附答案集锦
评论
0/150
提交评论