位置: 编程技术 - 正文

PHP的PSR规范中文版(php psr2)

发布时间:2023-12-25
文档仓库地址: PSR规范中文版 PSR-0自动加载 PSR-1基本代码规范 PSR-2代码样式 PSR-3日志接口 为何规范 摘录翻译了官方的一句话 本组织旨在通过讨论我们代码项目的共同点以找出一个协作编程的方法。 在此想到了一篇文章《Google为何要执行严格的代码规范》中有这么一段话: 各位看官我就不用多说关于规范的事情了。 写在最后 规范不是义务的,当然你也可以选择自己的方式,但使用规范会让你的合作更轻松。如今各种更现代化应用的编写已不像从前,一个应用一般都有非常多的模块组成,如果不执行规范,只会让整个项目的理解和沟通更加复杂。 若使用了规范,对项目和自己的好处当然不言而喻的。所有已接受的规范参考: 代码样式规范 本指南的意图是为了减少不同开发者在浏览代码时减少认知的差异。 为此列举一组如何格式化PHP代码的共用规则。 各个成员项目的共性组成了本文的样式规则。当不同的开发者在不同的项目中合作时,将会在这些不同的项目中使用一个共同的标准。 因此,本指南的好处不在于规则本身,而在于共用这些规则。 在 RFC 中的特性关键词"必须"(MUST),“不可”(MUST NOT),“必要”(REQUIRED),“将会”(SHALL),“不会”(SHALL NOT),“应当”(SHOULD),“不应”(SHOULD NOT),“推荐”(RECOMMENDED),“可以”(MAY)和“可选”(OPTIONAL)在这文档中将被用来描述。 1. 大纲 代码必须遵守 PSR-1。 代码必须使用4个空格的缩进,而不是制表符。 一行代码长度不应硬性限制;软限制必须为个字符;也应当是个字符或者更少。 在namespace声明下面必须有一个空行,并且use声明代码块下面也必须有一个空行。 类的左花括号必须放到下一行,右花括号必须放在类主体的下一行。 方法的左花括号必须放在下一行,右花括号必须放在方法主体下面。 所有的属性和方法必须有可见性(译者注:Public, Protect, Private)声明;abstract和final声明必须在可见性之前;static声明必须在可见性之后。 控制结构的关键词必须在后面有一个空格; 方法和函数不可有。 控制结构的左花括号必须放在同一行,右花括号必须放在控制主体的下一行。 控制结构的左括号后面不可有空格,右括号之前不可有空格。

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的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 转载请保留说明!

上一篇:PHP中time(),date(),mktime()区别介绍

下一篇:php stream_get_meta_data返回值

  • 代扣个税怎么做凭证
  • 固定资产计提折旧计入什么科目
  • 个体工商户开普票限额最新规定
  • 报销金额大于发票金额几毛钱
  • 分摊房屋租赁费计入什么科目
  • 服务费发票税率1%
  • 其他收益科目在哪个科目前面填
  • 抵扣联 发票联
  • 水利建设专项收入的税率是多少?
  • 企业向个人借款是否合法
  • 购买电商平台
  • 新个税工资薪金和综合所得
  • 非货币性资产投资个人所得税
  • 固定资产折旧提完了之后还要怎么处理吗
  • 专票金额和实际报销金额不符
  • 高管培训费不能税前列支
  • 收到外币计算税款的汇率是怎么算的?
  • 企业如何避免风险
  • 小规模纳税人不开票收入填在哪里
  • 建筑劳务预缴税款后怎么申报
  • 会计帐务处理程序
  • 印花税退费
  • 劳务分包费用组成比例
  • 结转进项税销项税额的分录怎么写
  • macbookpro安装dmg
  • 冲办公费会计分录
  • 公益性捐赠支出的标准
  • 埃热泽尔斯湖面上的波纹,拉脱维亚拉特加尔地区 (© Eaglewood Films/Nimia)
  • 研发费用税前加计扣除怎么算
  • vue 百度地图 移动端
  • 科纳克里市
  • 不锈餐具有几种材质
  • 养老院管理系统er图
  • 前端面试题基础篇
  • ipcrm命令
  • 完美怎么用
  • 代发工资的会计科目
  • python填写表格
  • 收到员工的社保费用记什么科目
  • 缴纳税款滞纳金怎么算
  • windows安装步骤总结
  • 融资租赁业务应包括哪些
  • 在建工程核算的内容有哪些
  • 企业税务分为哪几类
  • 建筑公司是可以开在住宅小区吗
  • 资产类会计科目记忆口诀
  • mongodb数据库语句
  • 企业什么情况
  • 上个月开的票这个月能用吗
  • 事业单位资产负债表自动转帐
  • 工程结算属于哪类账户
  • 企业会计本年利润
  • 企业所得税A类年报怎么申报
  • 水电费的会计分录
  • 收回投资收到的现金占比大说明
  • 收到现金长时间不付款
  • 福利费需要通过应付职工薪酬吗
  • 认缴 实收资本
  • 股权转让的印花税税率是多少
  • 出纳现金日记账怎么记账
  • 固定资产发票未到可以确认固定资产吗
  • 预付的展会费如何入账
  • 民办幼儿园如何生存
  • 一般要做代理,授权书有什么用
  • mysql数据查询语句
  • 图形工具的作用
  • ubuntu中安装vim
  • windows10指纹用不了
  • windows超级管理员默认密码
  • mac识别文字软件
  • ic_launcher.xml
  • 使用xshell连接虚拟机需要修改哪些配置
  • Unity3D游戏开发毕业论文
  • shell脚本批处理
  • jquerycdn
  • asynctask优缺点
  • js鼠标点击图片就消失
  • 个人所得税缴纳标准2024年
  • 国家税务总局辽宁省税务局
  • 国税网查发票真伪
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号