编码规范
1、使用Yii2 核心框架代码规范
* 文件必须使用 <?php 或 <?= 标签。
* 文件未尾应该有一个新行。
* PHP代码文件必须只能使用无BOM的UTF-8。
* 代码缩进必须使用4个空格,而不是tab按键。
* 类名必须使用大驼峰式(首字母大写)声明。
* 类中常量必须使用全大写带下划线方式声明。
* 方法名称必须使用小驼峰式(首字母小写)声明 。
* 属性名称必须使用小驼峰式(首字母小写)声明。
* 如果是私有属性名,必须使用下划线开始。
* 使用elseif代替else if。
2、变量与数据类型
* 所有的数据类型和变量均应该小写。包括true,false,null和array
3、字符串
如果字符串中不包括变量或单引号时,请使用单引号。
$str = 'Like this.';
如果字符串中有单引号,你可以使用双引号来避免额外的转义。
变量替换
$str1 = "Hello $username!";
$str2 = "Hello {$username}!";
4、类
* 类应该使用大驼峰式(首字母大写)方式来命名。
* 括号应该写在类名下方。
* 每个类必须要有符合PHPDoc的文档部分。
参数,变量,属性和返回值必须声明类型,如boolean,integer,string,array或null。
你也可以使用类名,像Model或ActiveRecord。如:对于一个数组类型可以使用ClassName[]。
* 在类中的所有代码必须只有一个独立缩进tab。
* 一个PHP文件中仅应该有一个类。
* 所有的类均应该存在命名空间。
* 类名匹配文件名。类命名空间应该匹配字典结构。
/**
* Documentation
*/
class MyClass extends \yii\Object implements MyInterface
{
// code
}
类中常量必须使用全大写带下划线方式声明。例如:
<?php
class Foo
{
const VERSION = '1.0';
const DATE_APPROVED = '2012-06-01';
}
属性
* 当声明公共类成员时,要特别明确关键字public。
* 公有和保护变量应该在任何方法声明前被声明。私有变量可以在类顶部声明,但也
* 可添加在关联的类方法字块使用之前。
* 类中的属性声明顺序应该是从公有、保护到私有。
* 为了增强可读性,属性声明间没有空行且在属性和方法声明间有两个空⾏行。
* 私有变量应该像如此命名$_varName。
* 公共类成员和独立变量应该这样首字母小写命名$camelCase。
* 使用描述命名。变量最好不要使用$i和$j来命名。
例如:
<?php
class Foo
{
public $publicProp;
protected $protectedProp;
private $_privateProp;
}
方法
* 函数和方法应该命名使用首字母小写的小驼峰式。
* 名字应该体现函数所实现的功能描述。
* 类方法中应该经常可见private,protected和public的修饰。var是不允许的。
* 方法的开括号应该在方法下方。
/**
* Documentation
*/
class Foo
{
/**
* Documentation
*/
public function bar()
{
// code
return $value;
}
}
5、数组
* 数字索引不要使用负数作为索引。
* 使用下面的方法来声明数组:
$arr = [3,14,15,'Yii','FrameWork'];
* 如果有太多的元素时,可单独分行:
$arr = [
3, 14, 15,
92, 6, $test,
'Yii', 'Framework',
];
* 使用下面的格式来关联数组:
$config = [
'name' => 'Yii',
'options' => ['usePHP' => true],
];
6、控制语句
* 控制语句的条件必须有一个独立的空格在前后的插入句。
* 操作符的括号内应该用空格间隔。
* 开括号跟控制语句在同一行中。
* 关括号应该是新起一行。
* 针对只有一行的语句也使用括号。
if ($event === null) {
return new Event();
}
if ($event instanceof CoolEvent) {
return $event->instance();
}
return null;
// the following is NOT allowed:
if (!$model && null === $event)
throw new Exception('test');
7、switch语句
switch使用下面的格式:
switch ($this->phpType) {
case 'string':
$a = (string) $value;
break;
case 'integer':
case 'int':
$a = (int) $value;
break;
case 'boolean':
$a = (bool) $value;
break;
default:
$a = null;
}
其他规范项
设计文档
需包含
主逻辑流程图or可以说明业务逻辑的图
存储设计
db设计
其他设计
//容量要求和归档,退出设计
代码设计简要说明
log规范
log文件位置存储要统一文件配置
其他存储规范
oss
针对不同文件做路径规划
ocs
key统一文件管理
附加功能模块前缀
mqs
key统一文件管理
附加功能模块前缀