LuisEdware 版 PHP 编程规范(遵循 PSR-1/PSR-2)

目录

  1. 八荣八耻
  2. 代码风格
  3. 目录与文件
  4. 函数、成员属性、成员方法
  5. 数据表和字段
  6. 常量和配置
  7. 示例代码
  8. 其他约定
  9. 参考链接

八荣八耻

  • 以「动手实践」为荣, 以「只看不练」为耻;
  • 以「打印日志」为荣, 以「单步跟踪」为耻;
  • 以「空格缩进」为荣, 以「制表缩进」为耻;
  • 以「单元测试」为荣, 以「人工测试」为耻;
  • 以「模块复用」为荣, 以「复制粘贴」为耻;
  • 以「多态应用」为荣, 以「分支判断」为耻;
  • 以「优雅高效」为荣, 以「冗余拖沓」为耻;
  • 以「总结分享」为荣, 以「跪求其解」为耻。

代码风格

编程开发时,需要遵循 PSR 规范如下:

目录与文件

  • 目录使用小写加下划线;
  • 类库、函数文件统一以 .php 为后缀;
  • 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致;
  • 类文件采用驼峰法命名(首字母大写),其它文件采用小写+下划线命名;
  • 类名和类文件名保持一致,统一采用首字母大写的驼峰法命名;

函数、成员属性、成员方法

  • 函数的命名使用小写字母和下划线的方式
  • 成员属性的命名使用首字母小写的驼峰法
  • 成员方法的命名使用首字母小写的驼峰法

数据表和字段

  • 数据表采用小写加下划线方式命名
  • 字段采用首字母小写的驼峰法命名

常量和配置

  • 常量以大写字母和下划线命名
  • 配置以小写字母和下划线命名

示例代码

函数声明示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
<?php
/**
* 符合 RSR-1,RSR-2 的编程实例
*
* @Date 2017/02/17 18:00
* @Author 七月十五九月初七
* @License 广东七月十五九月初七科技有限公司
* @Copyright Copyright (c) 2017 PSR-1.PSR-2 Ltd
*/
namespace PSR; // 顶部命名空间
use Yii; // 空一行 use 引入类
/**
* 类描述
* 类名必须大写开头驼峰.
*/
abstract class ExampleClass // {}必须换行
{
/**
* 常量描述
*
* @var string
*/
const THIS_IS_A_CONST = ''; // 常量全部大写下划线分割
/**
* 属性描述
*
* @var string
*/
public $nameTest = ''; // 属性名称建议开头小写驼峰,成员属性必须添加public(不能省略), private, protected修饰符
/**
* 属性描述
*
* @var string
*/
private $_privateNameTest = ''; // 类私有成员属性,【个人建议】下划线小写开头驼峰
/**
* 构造函数
*
* 构造函数描述
*
* @param string $value 形参名称/描述
*/
public function __construct($value = '')// 成员方法必须添加public(不能省略), private, protected修饰符
{// {}必须换行
$this->nameTest = new TestClass();
// 链式操作
$this->nameTest->functionOne()->functionTwo()->functionThree();
// 一段代码逻辑执行完毕 换行
// code...
}
/**
* 成员方法名称
*
* 成员方法描述
*
* @param string $value 形参名称/描述
*
* @return 返回值类型 返回值描述
*/
public static function staticFunction($value = '')// static位于修饰符之后
{
// code...
}
/**
* 成员方法名称
*
* 成员方法描述
*
* @param string $value 形参名称/描述
*
* @return 返回值类型 返回值描述
* 返回值类型:string,array,object,mixed(多种,不确定的),void(无返回值)
*/
public function testFunction($value = '')// 成员方法必须小写开头驼峰
{
// code...
}
/**
* 成员方法名称
*
* 成员方法描述
*
* @param string $value 形参名称/描述
*
* @return 返回值类型 返回值描述
*/
abstract public function abstractFunction($value = '');
// abstract 位于修饰符之前
/**
* 成员方法名称.
* 成员方法描述
*
* @param string $value 形参名称/描述
*
* @return 返回值类型 返回值描述
*/
final public function finalFunction($value = '')// final 位于修饰符之前
{
// code...
}
/**
* 成员方法名称
*
* 成员方法描述
*
* @param string $paramOne 形参名称/描述
* @param string $paramTwo 形参名称/描述
* @param string $paramThree 形参名称/描述
* @param string $paramFour 形参名称/描述
* @param string $paramFive 形参名称/描述
* @param string $paramSix 形参名称/描述
*
* @return 返回值类型 返回值描述
*/
public function tooLangFunction(
$paramOne = '', // 变量命名可小写开头驼峰或者下划线命名
$paramTwo = '',
$paramThree = '',
$paramFour = '',
$paramFive = '',
$paramSix = ''
)// 参数过多换行
{
if ($paramOne === $paramTwo) {// 控制结构=>后加空格,同{一行,(右边和)左边不加空格
// code...
}
if ($paramTwo === $paramThree) {
} elseif ($paramFour === $paramFive) {
} else {
}
switch ($paramThree) {
case 'three':
// code...
break;
case 'one':
case 'two':
case 'four':
case 'five':
// code...
break;
default:
// code...
break;
}
do {
// code...
} while ($paramFour <= 10);
while ($paramFive <= 10) {
// code...
}
for ($i = 0; $i < $paramSix; $i++) {
// code...
}
}
/**
* 成员方法名称
*
* 成员方法描述
*
* @param string $value 形参名称/描述
*
* @return 返回值类型 返回值描述
*/
private function _privateTestFunction($value = '')// 私有成员方法【个人建议】下划线小写开头驼峰
{
// code...
}
}

其他约定

团队约定:

  • 统一在 MacOS 下使用 PHPStorm 项目开发
  • 使用相同版本的 Homestead 进行开发环境部署
  • 使用相同版本的 PHPStorm
  • 使用统一设置的 PHPStorm 快捷键
  • 使用相同设置的 PHPStorm 忽略文件列表
  • _ide_helper.php 加入版本库
  • 使用统一规范的代码格式化配置
  • 使用统一标准的命名方式

执行目标:

  • 减少沟通成本
  • 减少代码冲突
  • 新人快速培训
  • 快速稳定完成任务
  • 无惊无险又到六点

使用 PHPStorm 的优点

  • 丰富易配的调试
  • 快捷安全的重构
  • 明确可控的跳转
  • 丰富稳定的工具
  • 健壮的语言支持

参考链接