位置: 编程技术 - 正文
1.1. 示例本示例包含上面的一些规则简单展示:
2. 概括2.1 基础代码规范代码必须遵守 PSR-1 的所有规则。
2.2 文件所有的PHP文件必须使用Unix LF(换行)作为行结束符。
所有PHP文件必须以一个空行结束。
纯PHP代码的文件关闭标签?>必须省略
2.3. 行行长度不可有硬限制。
行长度的软限制必须是个字符;对于软限制,自动样式检查器必须警告但不可报错。
行实际长度不应超过个字符;较长的行应当被拆分成多个不超过个字符的后续行。
在非空行后面不可有空格。
空行可以用来改善可读性和区分相关的代码块。
一行不应多于一个语句。
2.4. 缩进代码必须使用4个空格的缩进,并且不可使用制表符作为缩进。
注意:只用空格,不和制表符混合使用,将会对避免代码差异,补丁,历史和注解中的一些问题有帮助。使用空格还可以使调整细微的缩进来改进行间对齐变得非常简单。
2.5. 关键词和 True/False/NullPHP keywords 必须使用小写。
PHP常量true, false和null必须使用小写。
3. Namespace和Use声明如果存在,namespace声明之后必须有一个空行。
如果存在,所有的use声明必须放在namespace声明的下面。
一个use关键字必须只用于一个声明。
在use声明代码块后面必须有一个空行。
示例:
4. 类,属性和方法术语“类”指所有的类,接口和特性(traits)。
4.1. 扩展和继承一个类的extends和implements关键词必须和类名在同一行。
类的左花括号必须放在下面自成一行;右花括号必须放在类主体的后面自成一行。
implements一个列表可以被拆分为多个有一次缩进的后续行。如果这么做,列表的第一项必须要放在下一行,并且每行必须只有一个接口。
4.2. 属性所有的属性必须声明可见性。
var关键词不可用来声明属性。
一个语句不可声明多个属性。
属性名称不应使用单个下划线作为前缀来表明保护或私有的可见性。
一个属性声明看起来应该下面这样的。
4.3. 方法所有的方法必须声明可见性。
方法名不应只使用单个下划线来表明是保护或私有的可见性。
方法名在声明之后不可跟随一个空格。左花括号必须放在下面自成一行,并且右花括号必须放在方法主体的下面自成一行。左括号后面不可有空格,右括号前面不可有空格。
一个方法定义看来应该像下面这样。 注意括号,逗号,空格和花括号:
4.4. 方法参数在参数列表中,逗号之前不可有空格,逗号之后必须要有一个空格。
方法中有默认值的参数必须放在参数列表的最后面。
参数列表可以被分为多个有一次缩进的多个后续行。如果这么做,列表的第一项必须放在下一行,并且每行必须只放一个参数。
当参数列表被分为多行,右括号和左花括号必须夹带一个空格放在一起自成一行。
4.5. abstract,final和 static如果存在,abstract和final声明必须放在可见性声明前面。
如果存在,static声明必须跟着可见性声明。
4.6. 调用方法和函数要调用一个方法或函数,在方法或者函数名和左括号之间不可有空格,左括号之后不可有空格,右括号之前不可有空格。函数列表中,逗号之前不可有空格,逗号之后必须有一个空格。
<?phpbar();$foo->bar($arg1);Foo::bar($arg2, $arg3);参数列表可以被拆分成多个有一个缩进的后续行。如果这么做,列表中的第一项必须放在下一行,并且每一行必须只有一个参数。
5. 控制结构对于控制结构的样式规则概括如下:
控制结构关键词之后必须有一个空格 左括号之后不可有空格 右括号之前不可有空格 在右括号和左花括号之间必须有一个空格 代码主体必须有一次缩进 右花括号必须主体的下一行 每个结构的主体必须被括在花括号里。这结构看上去更标准化,并且当加新行的时候可以减少引入错误的可能性。
5.1. if,elseif,else
一个if结构看起来应该像下面这样。注意括号,空格,花括号的位置;并且else和elseif和前一个主体的右花括号在同一行。
关键词elseif应该替代else if使用以保持所有的控制关键词像一个单词。
5.2. switch,case
一个switch结构看起来应该像下面这样。注意括号,空格和花括号。case语句必须从switch处缩进,并且break关键字(或其他中止关键字)必须和case主体缩进在同级。如果一个非空的case主体往下落空则必须有一个类似// no break的注释。5.3. while,do while一个while语句看起来应该像下面这样。注意括号,空格和花括号的位置。同样的,一个do while语句看起来应该像下面这样。注意括号,空格和花括号的位置。
5.4. for一个for语句看起来应该像下面这样。注意括号,空格和花括号的位置。
5.5. foreach
一个foreach语句看起来应该像下面这样。注意括号,空格和花括号的位置。5.6. try, catch一个try catch语句看起来应该像下面这样。注意括号,空格和花括号的位置。
6. 闭包
闭包在声明时function关键词之后必须有一个空格,并且use之前也需要一个空格。
左花括号必须在同一行,右花括号必须在主体的下一行。
参数列表和变量列表的左括号之后不可有空格,其右括号之前也不可有空格。
在参数列表和变量列表中,逗号之前不可有空格,逗号之后必须有空格。
闭包带默认值的参数必须放在参数列表后面。
一个闭包声明看起来应该像下面这样。注意括号,空格和花括号的位置。
参数和变量列表可以被分成多个带一次缩进的后续行。如果这么做,列表的第一项必须放在下一行,并且一行必须只放一个参数或变量。
当最终列表(不管是参数还是变量)被分成多行,右括号和左花括号必须夹带一个空格放在一起自成一行。
下面是一个参数和变量列表被分割成多行的示例。注意如果在函数或者方法中把闭包作为一个参数调用,如上格式规则同样适用。
7. 结论在该指南中有很多风格的元素和做法有意被忽略掉。这些包括但不局限于:
全局变量和全局常量的声明
方法声明
操作符和赋值
行间对齐
注释和文档块
类名给你前缀和后缀
最佳实践
以后的建议可以修改和扩展该指南以满足这些或其他风格的元素和实践。
附录A 调查为了写这个风格指南,我们采用了调查个项目以确定共同的做法。这个调查在这里供他人查看。
A.1. 调查数据url, Calisthenics for PHP, 调查说明indent_type: 缩进类型。 tab = "使用制表符",2 or 4 = "空格数量"
line_length_limit_soft: 行长度的“软”限制,用字符。 ? = 不表示或者数字 no 意为不限制.
line_length_limit_hard: 行长度的"硬"限制,用字符。 ? = 不表示或者数字, no 意为不限制.
class_names: 类名如何命名 lower = 只是小写, lower_under = 小写加下划线, studly = 骆驼型.
class_brace_line: 类的左花括号是放在同(same)一行还是在下(next)一行?
constant_names: 类常量如何命名?upper = 大写加下划线分隔符。
true_false_null: 全校写或者全大写?
method_names: 方法名如何命名?camel = 驼峰式, lower_under = 小写加下划线分隔符。
method_brace_line: 方法的左花括号在同(same)一行还是在下(next)一行?
control_brace_line: 控制结构的左花括号在同(same)一行还是在下(next)一行?
control_space_after: 控制结构关键词后是否有空格?
always_use_control_braces: 控制结构总是使用花括号?
else_elseif_line: 当使用else和elseif,是否放在同(same)一行还是在下(next)一行?
case_break_indent_from_switch: case和break分别从swith语句处缩进多少次?
function_space_after: 函数调用的函数名和左括号是否有空格?
closing_php_tag_required: 如过是纯PHP文件,关闭标签?>是否需要?
line_endings: 使用何种的行结束符?
static_or_visibility_first: 在定义方法的时候static和可见性谁在前面?
control_space_parens: 在控制结构表达式中,左括号后面和右括号前面是否要有一个空格?yes = if ( $expr ), no =if ($expr).
blank_line_after_php: PHP的开始标签后面是否需要一个空行?
class_method_control_brace: 左花括号在类,方法和控制结构中的位置。
A.3. 调查结果indent_type: tab: 7 2: 1 4: line_length_limit_soft: ?: 2 no: 3 : 4 : 6 : 1 : 1 : 4 : 1line_length_limit_hard: ?: 2 no: : 4 : 3 : 2class_names: ?: 1 lower: 1 lower_under: 1 studly: class_brace_line: next: same: 6constant_names: upper: true_false_null: lower: upper: 3method_names: camel: lower_under: 1method_brace_line: next: same: 7control_brace_line: next: 4 same: control_space_after: no: 2 yes: always_use_control_braces: no: 3 yes: else_elseif_line: next: 6 same: case_break_indent_from_switch: 0/1: 4 1/1: 4 1/2: function_space_after: no: closing_php_tag_required: no: yes: 3line_endings: ?: 5 LF: static_or_visibility_first: ?: 5 either: 7 static: 4 visibility: 6control_space_parens: ?: 1 no: yes: 2blank_line_after_php: ?: 1 no: yes: 8class_method_control_brace: next/next/next: 4 next/next/same: next/same/same: 1 same/same/same: 6
推荐整理分享PHP的PSR规范中文版(php psr2),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:php ,php-parser,php 规范psr1 psr2,php 规范psr1 psr2,php psr2,php psr4规范,php psr2,php psr规范
php stream_get_meta_data返回值 测试代码如下:?php$fp=fopen("
PHP CURL CURLOPT参数说明(curl_setopt) CURLOPT_RETURNTRANSFER选项:curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);如果成功只将结果返回,不自动输出任何内容。如果失败返回FALSEcurl_setopt($ch,CURLOPT_RETURNTRANSFER,0)
PHP文件上传主要代码讲解 ?phpif($_FILES['myfile']['name']!=''){if($_FILES['myfile']['error']0){echo"错误状态:".$_FILES['myfile']['error'];}else{move_uploaded_file($_FILES['myfile']['tmp_name'],"uploads/".$FILES['myfile'
标签: php psr2
本文链接地址:https://www.jiuchutong.com/biancheng/278587.html 转载请保留说明!友情链接: 武汉网站建设