PHP的PSR2规范 和PHP-CodeSniffer 的介绍_第1页
PHP的PSR2规范 和PHP-CodeSniffer 的介绍_第2页
PHP的PSR2规范 和PHP-CodeSniffer 的介绍_第3页
PHP的PSR2规范 和PHP-CodeSniffer 的介绍_第4页
PHP的PSR2规范 和PHP-CodeSniffer 的介绍_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PHP_CodeSniffer的应用PHP_CodeSniffer是PEAR中的一个用PHP5写的用来检查嗅探PHP代码是否有违反一组预先设置好的编码标准的一个包,它能分析PHP程序,JAVASCRIP和CSS文件并且检查出哪些是与定义好的代码风格相违背的。它是确保你的代码简洁一致的必不可少的开发工具,甚至还可以帮助程序员减少一些语义错误。它必须是在linux环境下运行,安装和使用网上有很多教程。认识PHP_CodeSnifferPHP的PSR2规范PSR-0(AutoloadingStandard)自动加载标准PSR-1(BasicCodingStandard)基础编码标准PSR-2(CodingStyleGuide)编码风格向导PSR-3(LoggerInterface)日志接口FIG组织在制定跟PHP相关规范,简称PSR。目前已有4个代码规范,为了减少不同开发者在浏览代码时减少认知的差异。为此列举一组如何格式化PHP代码的共用规则。各个成员项目的共性组成了本文的样式规则。当不同的开发者在不同的项目中合作时,将会在这些不同的项目中使用一个共同的标准。因此,本指南的好处不在于规则本身,而在于共用这些规则。RFC2119中的必须(MUST),不可(MUSTNOT),建议(SHOULD),不建议(SHOULDNOT),可以/可能(MAY)等关键词将在本节用来做一些解释性的描述。PSR2介绍1、代码必须遵守

PSR-1。2、代码必须使用4个空格来进行缩进,而不是用制表符(

tab)。3、一行代码的长度不建议有硬限制;软限制必须为120个字符,建议每行代码80个字符或者更少。4、在命名空间(namespace)的声明下面必须有一行空行,并且在导入(use)的声明下面也必须有一行空行。5、类(class)的左大括号必须放到其声明下面自成一行,右大括号则必须放到类主体下面自成一行。6、方法(method)的左大括号必须放到其声明下面自成一行,右大括号则必须放到方法主体的下一行。7、所有的属性(property)和方法(method)

必须有可见性声明;抽象(abstract)和终结(final)声明必须在可见性声明之前;而静态(static)声明必须在可见性声明之后。译注:属性:private、protected以及public这几个封装属性、函式用的文字。8、在控制结构(controlstructure)关键字的后面必须有一个空格;而方法(method)和函数(function)的关键字的后面不可有空格。9、控制结构的左大括号必须跟其放在同一行,右大括号必须放在该控制结构代码主体的下一行。10、控制结构的左括号之后不可有空格,右括号之前也不可有空格。1.总览这个示例中简单展示了上文中提到的一些规则:

1.1范例2.1基础代码规范代码必须遵守

PSR-1

中的所有规则。2.2源文件所有的PHP源文件必须使用UnixLF(换行)作为行结束符。所有PHP源文件必须以一个空行结束。纯PHP代码源文件的关闭标签?>

必须省略。2.3.行行长度不可有硬限制。行长度的软限制必须是120个字符;对于软限制,代码风格检查器必须警告但不可报错。一行代码的长度不建议超过80个字符;较长的行建议拆分成多个不超过80个字符的子行。在非空行后面不可有空格。空行可以用来增强可读性和区分相关代码块。一行不可多于一个语句。2.通则2.4.缩进代码必须使用4个空格,且不可使用制表符来作为缩进。注意:代码中只使用空格,且不和制表符混合使用,将会对避免代码差异,补丁,历史和注解中的一些问题有帮助。空格的使用还可以使通过调整细微的缩进来改进行间对齐变得更加的简单。2.5.关键字和True/False/NullPHP关键字(keywords)必须使用小写字母。PHP常量true,

false和null

必须使用小写字母。命名空间(namespace)的声明后面必须有一行空行。所有的导入(use)声明必须放在命名空间(namespace)声明的下面。一句声明中,必须只有一个导入(use)关键字。在导入(use)声明代码块后面必须有一行空行。示例:3.

命名空间(Namespace)和导入(Use)声明4.1.

扩展(extend)和实现(implement)一个类的扩展(extend)和实现(implement)关键词必须和类名(classname)在同一行。类(class)的左大括号必须放在下面自成一行;右大括号必须放在类(class)主体的后面自成一行。4.

类(class),属性(property)和方法(method)实现(implement)列表可以被拆分为多个缩进了一次的子行。如果要拆成多个子行,列表的第一项必须要放在下一行,并且每行必须只有一个接口(interface)。所有的属性(property)都必须声明其可见性。变量(var)关键字不可用来声明一个属性(property)。一条语句不可声明多个属性(property)。属性名(propertyname)

不推荐用单个下划线作为前缀来表明其保护(protected)或私有(private)的可见性。一个属性(property)声明看起来应该像下面这样。4.2.

属性(property)所有的方法(method)都必须声明其可见性。方法名(methodname)

不推荐用单个下划线作为前缀来表明其保护(protected)或私有(private)的可见性。方法名(methodname)在其声明后面不可有空格跟随。其左大括号必须放在下面自成一行,且右大括号必须放在方法主体的下面自成一行。左括号后面不可有空格,且右括号前面也不可有空格。一个方法(method)声明看来应该像下面这样。注意括号,逗号,空格和花括号的位置:4.3.

方法(method)在参数列表中,逗号之前不可有空格,而逗号之后则必须要有一个空格。方法(method)中有默认值的参数必须放在参数列表的最后面。4.4.

方法(method)的参数参数列表可以被拆分为多个缩进了一次的子行。如果要拆分成多个子行,参数列表的第一项必须放在下一行,并且每行必须只有一个参数。当参数列表被拆分成多个子行,右括号和左花括号之间必须又一个空格并且自成一行。当出现abstract以及final声明时,一定(MUST)要在将之声明于可视属性(visbility)之前。当出现static声明时,一定(MUST)要将之声明于可视属性(visbility)之后。4.5.

抽象(abstract),终结(final)和

静态(static)当建立一个方法(method)或是函式(function)时,在函式名称以及开始括号之间一定不要有空白,而开始括号后与结束括号前也一定不要(MUSTNOT)有空白。在参数列所用的逗号前一定不要有空白,而每个逗号后一要有空白。参数列可以拆成多行,而每行都缩排。若是要这么做,第一个参数一定要再下一行,而且每行就一定只有一个参数。4.6.调用方法和函数下面是对于控制结构代码风格的概括:在控制结构的关键词之后一定要用一个空白隔开。在左括号“(”之后一定不要有空白。在右括号“)”之前一定不要有空白。在右括号“)”以及开始大(花)括号”{“之间一定要有一个空白隔开。控制结构的代码主体必须进行一次缩进。控制结构的右花括号“}”必须主体的下一行。每个控制结构的代码主体必须要被包覆在成对的大括号之间。这样可是使代码看上去更加标准化,并且加入新代码的时候还可以因此而减少引入错误的可能性。5.控制结构一个if结构看起来如下。请注意括号、空白以及大括号的位置;还有else以及elseif跟结束的大括号“}”在主体前的同一行里。5.1:

if,elseif,else一个switch结构看起来如下。请注意括号、空白以及大括号的位置。case叙述一定要比switch再缩排一次,而关键词break(或其他结束关键词)的缩排层级一定是同于case的程序本体。如果一个有主体代码的case结构故意的继续向下执行则必须要有一个类似于//nobreak的注释。5.2.

switch,case下面是一个while循环控制结构的示例,注意其中括号,空格和大括号的位置。同样地,一个dowhile结构看起来如下。请注意括号、空白以及大括号的位置。5.3.

while,dowhile一个for叙述看起来如下。请注意括号、空白以及大括号的位置。5.4for下面是一个foreach循环控制结构的示例,注意其中括号,空格和大括号的位置。5.5foreachtrycatch叙述如下。请注意括号、空白以及大括号位置。5.6.

try,

catch声明闭包时所用的function关键字之后必须要有一个空格,而use关键字的前后都要有一个空格。闭包的左花括号必须跟其在同一行,而右大括号必须在闭包主体的下一行。闭包的参数列表和变量列表的左括号后面不可有空格,右括号的前面也不可有空格。闭包的参数列表和变量列表中逗号前面不可有空格,而逗号后面则必须有空格。闭包的参数列表中带默认值的参数必须放在参数列表的结尾部分。下面是一个闭包的示例。注意括号,空格和大括号的位置。6.闭包参数列表和变量列表可以被拆分成多个缩进了一级的子行。如果要拆分成多个子行,列表中的第一项必须放在下一行,并且每一行必须只放一个参数或变量。当列表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论