PSR-0:
1:一个完全合格的namespace和class必须符合这样的结构:
“\< Vendor Name>(< Namespace>)*< Class Name>”
2:每个namespace必须有一个顶层的namespace("Vendor Name"提供者名字)
3:每个namespace可以有多个子namespace
4:当从文件系统中加载时,每个namespace的
分隔符(/)要转换成 DIRECTORY_SEPARATOR(操作系统路径分隔符)
5:在类名中,每个下划线(_)符号要转换成DIRECTORY_SEPARATOR(操作系统路径分隔符)。
在namespace中,下划线(_)符号是没有(特殊)意义的。
6:当从文件系统中载入时,合格的namespace和class一定是以 .php 结尾的
7:verdor name,namespaces,class名可以由大小写字母组合而成(大小写敏感的)
1:一个完全合格的namespace和class必须符合这样的结构:
“\< Vendor Name>(< Namespace>)*< Class Name>”
2:每个namespace必须有一个顶层的namespace("Vendor Name"提供者名字)
3:每个namespace可以有多个子namespace
4:当从文件系统中加载时,每个namespace的
分隔符(/)要转换成 DIRECTORY_SEPARATOR(操作系统路径分隔符)
5:在类名中,每个下划线(_)符号要转换成DIRECTORY_SEPARATOR(操作系统路径分隔符)。
在namespace中,下划线(_)符号是没有(特殊)意义的。
6:当从文件系统中载入时,合格的namespace和class一定是以 .php 结尾的
7:verdor name,namespaces,class名可以由大小写字母组合而成(大小写敏感的)
PSR-1:
1:PHP源文件必须只使用 <?php 和 <?= 这两种标签。
2:源文件中php代码的编码格式必须是不带字节顺序标记(BOM)的UTF-8。
3:一个源文件建议只用来做声明(类(class),函数(function),常量(constant)等)
或者只用来做一些引起副作用的操作(例如:输出信息,修改.ini配置等),
但不建议同时做这两件事。
4:命名空间(namespace)和类(class) 必须遵守PSR-0标准。
5:类名(class name) 必须使用骆驼式(StudlyCaps)写法
(注:驼峰式(cameCase)的一种变种,后文将直接用StudlyCaps表示)。
6:类(class)中的常量必须只由大写字母和下划线(_)组成。
7:方法名(method name) 必须使用驼峰式(cameCase)写法。
2:源文件中php代码的编码格式必须是不带字节顺序标记(BOM)的UTF-8。
3:一个源文件建议只用来做声明(类(class),函数(function),常量(constant)等)
或者只用来做一些引起副作用的操作(例如:输出信息,修改.ini配置等),
但不建议同时做这两件事。
4:命名空间(namespace)和类(class) 必须遵守PSR-0标准。
5:类名(class name) 必须使用骆驼式(StudlyCaps)写法
(注:驼峰式(cameCase)的一种变种,后文将直接用StudlyCaps表示)。
6:类(class)中的常量必须只由大写字母和下划线(_)组成。
7:方法名(method name) 必须使用驼峰式(cameCase)写法。
PSR-2:
1. 源文件
文件末尾必须空一行。
必须使用Unix LF(换行)作为行结束符。
纯PHP代码源文件的关闭标签?>必须省略。
1. 源文件
文件末尾必须空一行。
必须使用Unix LF(换行)作为行结束符。
纯PHP代码源文件的关闭标签?>必须省略。
2. 缩进
必须使用4个空格来缩进,或者在编辑器里手动设置Tab为4个空格也可以
必须使用4个空格来缩进,或者在编辑器里手动设置Tab为4个空格也可以
3. 行
一行推荐的是最多写80个字符
一行推荐的是最多写80个字符
4. 关键字和 True/False/Null
php的关键字,必须小写,boolean值:true,false,null 也必须小写
php的关键字,必须小写,boolean值:true,false,null 也必须小写
5. 命名空间(Namespace)和导入(Use)声明
命名空间(namespace)的声明后面必须有一行空行。
所有的导入(use)声明必须放在命名空间(namespace)声明的下面。
一句声明中,必须只有一个导入(use)关键字。
在导入(use)声明代码块后面必须有一行空行。
命名空间(namespace)的声明后面必须有一行空行。
所有的导入(use)声明必须放在命名空间(namespace)声明的下面。
一句声明中,必须只有一个导入(use)关键字。
在导入(use)声明代码块后面必须有一行空行。
6. 类(class),属性(property)和方法(method)
1 . 继承(extends) 和实现(implement) 必须和 class name 写在一行,
且花括号要换行写。
2 . 属性(property)必须声明不能省略 public,protected,private。
3 . 方法(method) ,必须 声明其可见性, public,protected,private,不能省略。
并且,花括号{ 必须换行写。如果有多个参数,第一个参数后紧接,再加个空格,
且函数name和( 之间必须要有个空格:function_name ($par, $par2, $pa3),
如果参数有默认值,也要用左右空格分开。
4 . 当用到抽象(abstract)和终结(final)来做类声明时,它们必须放在可见性声明
(public 还是protected还是private)的前面。而当用到静态(static)来做类
声明时,则必须放在可见性声明的后面。
7. 控制结构
1 . 继承(extends) 和实现(implement) 必须和 class name 写在一行,
且花括号要换行写。
2 . 属性(property)必须声明不能省略 public,protected,private。
3 . 方法(method) ,必须 声明其可见性, public,protected,private,不能省略。
并且,花括号{ 必须换行写。如果有多个参数,第一个参数后紧接,再加个空格,
且函数name和( 之间必须要有个空格:function_name ($par, $par2, $pa3),
如果参数有默认值,也要用左右空格分开。
4 . 当用到抽象(abstract)和终结(final)来做类声明时,它们必须放在可见性声明
(public 还是protected还是private)的前面。而当用到静态(static)来做类
声明时,则必须放在可见性声明的后面。
7. 控制结构
if ($expr1) { //左右空格
// if body
} elseif ($expr2) { //elesif 连着写
// elseif body
} else {
// else body;
}
// if body
} elseif ($expr2) { //elesif 连着写
// elseif body
} else {
// else body;
}
switch ($expr) { //左右空格
case 0:
echo 'First case, with a break'; //对其
break; //换行写break ,也对其。
case 1:
echo 'Second case, which falls through';
// no break
case 2:
case 3:
case 4:
echo 'Third case, return instead of break';
return;
default:
echo 'Default case';
break;
}
while ($expr) { //左右空格
// structure body
}
case 0:
echo 'First case, with a break'; //对其
break; //换行写break ,也对其。
case 1:
echo 'Second case, which falls through';
// no break
case 2:
case 3:
case 4:
echo 'Third case, return instead of break';
return;
default:
echo 'Default case';
break;
}
while ($expr) { //左右空格
// structure body
}
do {
// structure body; //左右空格
} while ($expr);
for ($i = 0; $i < 10; $i++) { //注意几个参数之间的空格
// for body
}
// structure body; //左右空格
} while ($expr);
for ($i = 0; $i < 10; $i++) { //注意几个参数之间的空格
// for body
}
foreach ($iterable as $key => $value) { //还是空格问题
// foreach body
}
// foreach body
}
try {
// try body
} catch (FirstExceptionType $e) { //同样也是注意空格。
// catch body
} catch (OtherExceptionType $e) {
// catch body
}
// try body
} catch (FirstExceptionType $e) { //同样也是注意空格。
// catch body
} catch (OtherExceptionType $e) {
// catch body
}
PSR-3:
1:来规范日志接口(Logger Interface)的
1:来规范日志接口(Logger Interface)的
PSR-4:
1:类名必须要和对应的文件名要一模一样,大小写也要一模一样。
1:类名必须要和对应的文件名要一模一样,大小写也要一模一样。