位置: 编程技术 - 正文

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

编辑:rootadmin
文档仓库地址: 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元转让
  • 软件企业的工资怎么样
  • 土地增值税清算时间
  • 专用发票扣税
  • 企业理财产品收益要交企业所得税吗
  • 北京建筑施工企业排名
  • 土地转让收入怎么交所得税?
  • 开具普通发票只写单位名称和税号可以吗?
  • 出口退税网上申报视频
  • 资产类科目包括哪些内容
  • 长期股权投资权益法初始计量
  • 净资产收益率怎么求
  • 计提工资是计提当月的还是上个月的
  • 咨询公司怎么交社保
  • 成本和费用属于资产吗
  • 间接生产费用包括
  • 网络打印机找不到网络路径
  • 任务栏没反应怎么重启
  • wifi增强器1200m的是不是比较好
  • PHP:zip_close()的用法_Zip函数
  • 出口退税登记证在哪办
  • 采购原材料凭证未到达
  • php取二维数组的一组内容
  • 已销售未出库如何结转成本
  • 会计核算的职能主要是从什么方面综合反映
  • 工会经费是如何计提的
  • arc架构
  • [深度学习] 基于切片辅助超推理库SAHI优化小目标识别
  • 2023年我要实现的目标是
  • 营销策划协议
  • mysql左连接和右连接语法
  • sqlserver存储过程教程
  • 收到的现金折扣
  • 存货的期末余额是账面余额吗
  • 进项税加计抵扣政策2023年
  • 纳税人企业本月纳税额
  • 个体户需要实缴吗
  • 跨年发生退货税务处理
  • 资产负债表里的固定资产是原值还是净值
  • 无形资产分期付款入账价值如何核算?
  • 工资和社保基数的关系
  • 如何将港币兑换成人民币
  • 贷款损失准备核销
  • 收入分成的账务处理
  • 长期股权投资权益法账务处理
  • 企业对私账户合法吗
  • 减免税款月末是否结平
  • 设备基础属于什么基础
  • 去年未做账的发票怎么查
  • sql的all和any
  • Linux环境下MySQL服务器优化的方法详解
  • Win7 SP1补丁32/64位 2015年1月汇总篇(内附下载)
  • sunasServ.exe - sunasServ是什么进程 有何作用
  • 怎么彻底关闭windows更新
  • gho文件过大
  • js编程实例
  • 为什么要建立文明城市
  • quick-lua touch 触摸事件
  • 复制到文件夹怎么弄
  • 浅谈python要进行房价预测的优点和缺点
  • js表单生成器动手实践
  • javascript面向对象编程指南第三版
  • 临港税务局第四分局电话
  • 1992年2月20号是什么
  • 婚姻登记处婚俗改革宣传
  • 铁路检察院和普检哪个好
  • 新疆税务服务网
  • 浙江国地税联合电子税务局哪里看收到的发票
  • 北京朝阳国家税务总局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设