Permalink
Find file
1f3d25d Sep 12, 2015
58 lines (45 sloc) 4.86 KB

PHP 基本编码规范

本规范参考 PSR-1PSR-2,在此标准之上做了更严格的限制和扩充。

本规范仅适用于 PHP 5.4 以上版本。

1.文件与行

  • PHP 代码文件必须<?php
  • PHP 代码文件必须不带 BOM 的 UTF-8 编码;
  • 代码必须使用4个空格符而不是 tab 键进行缩进;
  • 所有 PHP 文件必须使用Unix LF (linefeed)作为行的结束符;
  • 所有 PHP 文件必须以一个空白行作为结束;
  • 纯 PHP 代码文件必须省略最后的 ?> 结束标签;
  • 视图文件中的 PHP 代码(模板代码除外)必须使用 <?php ?> 长标签 或 <?= ?> 短输出标签;一定不可使用其它自定义标签。
  • 每行的字符数应该保持在80个之内, 不应该多于120个;
  • 非空行后一定不能有多余的空格符;
  • 每行一定不能存在多于一条语句。

2.类、方法与属性

  • PHP代码中应该只定义类、函数、常量等声明或只定义其他会产生 从属效应 的操作(如:生成文件输出、引入文件以及修改 ini 配置文件等),二者只能选其一;
  • 命名空间以及类必须符合 PSR 的自动加载规范:PSR-4;
  • 类的命名必须遵循 StudlyCaps 大写开头的驼峰命名规范;
  • 类中的常量所有字母都必须大写,单词间用下划线分隔;
  • 方法名称必须符合 camelCase 式的小写开头驼峰命名规范;
  • use声明必须位于namespace声明之后, 每个 namespace 命名空间声明语句块和 use 声明语句块后面,必须插入一个空白行;
  • 类与方法的开始花括号({)必须写在函数声明后自成一行,结束花括号(})也必须写在函数主体后自成一行;
  • 关键词 extendsimplements必须写在类名称的同一行;
  • 需要添加 abstractfinal 声明时, 必须写在访问修饰符前,而 static必须写在其后;
  • 类的属性和方法必须添加访问修饰符(privateprotected 以及 public),不要使用下划线_作为前缀来区分属性是 protected 或 private;
  • 每条语句一定不能定义超过一个属性,一定不可使用关键字 var 声明一个属性;
  • 方法及函数的声明和调用时,方法名或函数名与参数左括号之间一定不能有空格,参数左括号后与右括号前也一定不能有空格,参数列表中每个逗号后面必须要有一个空格,而逗号前面一定不能有空格。

3.控制结构

  • 控制结构的关键字后必须要有一个空格,右括号 ) 与开始花括号 { 间也一定有一个空格;
  • 控制结构的开始花括号({)必须写在声明的同一行,而结束花括号(})必须写在主体后自成一行;
  • 控制结构转折(elseelse ifcatch 以及 do ... while 结构中的 while)关键字与上一结构体的结束花括号(})必须写在同一行中,两者之间一定有一个空格;
  • 条件括号左括号后与右括号前一定不能有空格,两个子句句之间(分号之后)一定有一个空格;
  • 每个结构体的主体都必须被包含在成对的花括号之中。

4.闭包

  • 闭包声明时,关键词 function 后以及关键词 use 的前后都必须要有一个空格;
  • 开始花括号必须写在声明的同一行,结束花括号必须紧跟主体结束的下一行;
  • 参数列表和变量列表的左括号后以及右括号前,必须不能有空格;
  • 参数和变量列表中,逗号前必须不能有空格,而逗号后必须要有空格。

5.变量与关键字

  • PHP所有 关键字 必须全部小写,常量 truefalsenull必须全部小写;
  • arrayemtpyissetunset 等关键字括号内的变量两端必须不能有多余的空格;
  • 变量声明应该使用下划线分隔的小写字母,不应该使用非通用的单词简写,不应该出现英文以外的拼写或简写;
  • 变量赋值和比较(包括控制结构条件语句和数组中)的操作符(=>< 以及 =>)两端必须各有一个空格,但自增(++)自减(--)操作变量与符号之间一定不能有空格;
  • 数组声明和使用都应该使用[] 代替 array()
  • 需要换行数组变量的声明,数组开始符号([array(应该和操作符在同一行,数组的第一个元素应该在新的一行开始,且与上一行之间必须保持一个缩进,数组的结束符号([])必须新起一行,且应该与变量的第一个字符对齐。