php开发规范

PHP 开发规范整理

代码样式规范

  1. 编码基本规范
    a、代码必须遵守 PSR-1。

b、文件编码Unicode (UTF-8) 编码保存。同时不要使用 字节序标记(BOM)
c、代码必须使用4个空格的缩进,而不是制表符。
d、一行代码长度不应硬性限制;软限制必须为120个字符;也应当是80个字符或者更少。
2、申明相关规范

2.1 命名空间申明和使用
a、 ## 在namespace声明下面必须有一个空行,并且use声明代码块下面也必须有一个空行
namespace frontendcontrollers;
.....空格
use Yii;
.....空格
2.2 类的申明
a、类的左花括号必须放到下一行,右花括号必须放在类主体的下一行。
b、方法的左花括号必须放在下一行,右花括号必须放在方法主体下面。
c、术语“类”指所有的类,接口( interface ) 抽象类( abstract ) 和 特性( traits )
class DbMysql
{
.....代码
}
interface DbMysql
{
.....代码
}
abstract DbMysql

{

.....代码

}

traits DbMysql
{
.....代码
}
2.3 类的扩展和继承
a、一个类的extends和implements关键词必须和类名在同一行。
b、类的左花括号必须放在下面自成一行;右花括号必须放在类主体的后面自成一行。
class ClassName extends ParentClass implements ArrayAccess, Countable
{
.....代码
}
c、implements一个列表可以被拆分为多个有一次缩进的后续行。如果这么做,列表的第一项必须要放在下一行,并且每行必须只有一个接口。
class ClassName extends ParentClass implements
ArrayAccess,
Countable,
Serializable
{
.....代码
}
2.4 方法申明
a、所有的属性和方法必须有可见性(译者注:Public, Protect, Private)声明
b、在参数列表中,逗号之前不可有空格,逗号之后必须要有一个空格。
c、方法中有默认值的参数必须放在参数列表的最后面。
class DbMysql
{
public function getUser($arg1, &$arg2, $arg3 = [])
{
.....代码
}
}
b、abstract和final声明必须在可见性之前;
class DbMysql
{
final public function getUser()
{
.....代码
}
}
c、static声明必须在可见性之后
静态 static 方法应该声明其作用域,且不应该再被声明为 private 私有,而应该为 protected 或者public
如果只是不想被子类继承,则应该用 final 声明它们
class DbMysql
{
public static function getUser()
{
.....代码
}
}
3、命名规范
3.1 普通变量
a. 所有字母都使用小写;
b. 对于一个变量使用多个单词的,使用’_'作为每个词的间隔
例如:$base_dir、$red_rose_price等
3.2 局部变量
a. 所有字母使用小写;
b. 变量使用’'开头;
c. 多个单词组成的局部变量名使用’'作为每个词间的间隔
例子:$_base_dir、$_red_rose_price等。
3.3 全局变量
全局变量应该带前缀’g',知道一个变量的作用域是非常重要的
例如
global $g_log_level;
global $g_logpath;
3.4 全局常量
a. 所有字母使用大写
b. 全局变量多个单词间使用’
'作为间隔
例子:$BASE_DIR、$RED_ROSEPRICE等
3.5 函数
a. 所有字母都使用小写
b. 对于一个变量使用多个单词的,使用’
'作为每个词的间隔
c. 函数的命名建议使用动词+名词的方式,如get_user_img。
完成一组功能的函数放到一个文件中,存放函数的文件采用function_name.func.php命名
3.6 类
a. 以大写字母开头;
b. 多个单词组成的变量名,单词之间不用间隔,各个单词首字母大写。
例子:class MyClass 或class DbOracle等。
3.7 方法
a. 首字母小写;
b. 多个单词间不使用间隔,除第一个单词外,其他单词首字母大写
例子:function myFunction ()或function myDbOracle ()等
4、控制结构申明
4.1. if,elseif,else
a、一个if结构看起来应该像下面这样。注意括号,空格,花括号的位置;
b、并且else和elseif和前一个主体的右花括号在同一行。
$value) {
// foreach body
}
4.6. try, catch
a、一个try catch语句看起来应该像下面这样。注意括号,空格和花括号的位置。
try {
// try body

} catch (FirstExceptionType $e) {
// catch body

} catch (OtherExceptionType $e) {
// catch body
}
5、编码习惯
5.1、变量使用
a.所有的变量均需要先申明后使用
b.对于数组或对象,在使用一个不确定的key时,首先进行isset()的判断,然后再使用
例子:$var = ''; isset($val) ? $val : '';
5.2、变量的输入输出
a.不推荐直接使用$_GET、$_POST或者$_REQUEST获取值
b.所有的输入输出都必须使用框架封装的方法来实现
5.3、字符串相关
a.字符串尽量使用单引号
b.如果字符串中需要使用变量,例如:$val = "tips:{$title}";
6. 闭包( 参考 )
闭包在声明时function关键词之后必须有一个空格,并且use之前也需要一个空格。
左花括号必须在同一行,右花括号必须在主体的下一行。
参数列表和变量列表的左括号之后不可有空格,其右括号之前也不可有空格。
在参数列表和变量列表中,逗号之前不可有空格,逗号之后必须有空格。
闭包带默认值的参数必须放在参数列表后面。
一个闭包声明看起来应该像下面这样。注意括号,空格和花括号的位置。
$closureWithArgs = function ($arg1, $arg2) {
// body
};
$closureWithArgsAndVars = function ($arg1, $arg2) use ($var1, $var2) {
// body
};
参数和变量列表可以被分成多个带一次缩进的后续行。如果这么做,列表的第一项必须放在下一行,并且一行必须只放一个参数或变量。
当最终列表(不管是参数还是变量)被分成多行,右括号和左花括号必须夹带一个空格放在一起自成一行。
下面是一个参数和变量列表被分割成多行的示例。
$longArgs_noVars = function (
$longArgument,
$longerArgument,
$muchLongerArgument
) {
// body
};
$noArgs_longVars = function () use (
$longVar1,
$longerVar2,
$muchLongerVar3
) {
// body
};
$longArgs_longVars = function (
$longArgument,
$longerArgument,
$muchLongerArgument
) use (
$longVar1,
$longerVar2,
$muchLongerVar3
) {
// body
};
$longArgs_shortVars = function (
$longArgument,
$longerArgument,
$muchLongerArgument
) use ($var1) {
// body
};
$shortArgs_longVars = function ($arg) use (
$longVar1,
$longerVar2,
$muchLongerVar3
) {
// body
};
注意如果在函数或者方法中把闭包作为一个参数调用,如上格式规则同样适用。
$foo->bar(
$arg1,
function ($arg2) use ($var1) {
// body
},
$arg3
);

关键字:php

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部