位置: 编程技术 - 正文

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返回值

  • 合同中增值税税率怎么描述
  • 借款合同印花税税率2023
  • 核定征收一般纳什么税
  • 外汇储备保值增值
  • 进口消费税应该记到什么科目
  • 限售股在锁定期内卖出
  • 文化建设税是含税价吗
  • 对公账户发工资怎么操作
  • 企业所得税季度申报填写示例
  • 工资算管理费用还是生产成本
  • 其他收益会计分录
  • 固定资产在现金流量表中的体现
  • 运输业务增值税
  • 应付款管理参数设置的基本操作流程
  • 机器设备折旧费用属于间接生产费用
  • 客户以旧料抵货款账务如何处理?
  • 出口退税未收汇已申报
  • 非居民企业所得税源泉扣缴管理暂行办法
  • 增值税抵扣进项税额交税账务处理
  • 计提城建税计入什么科目
  • 12月份奖金怎么扣个税
  • 税务登记需要什么资料2022
  • 借款支付工程款合法吗
  • 2021年如何申报海外收入
  • 以固定资产投资入股
  • 冲失业保险分录怎么做
  • 税务稽查补缴增值税税款的账务处理
  • 上月材料入库会计分录
  • 航空公司收取什么费
  • 八个与cpu相关的字符
  • PQV2ISECURITY.EXE - PQV2ISECURITY是什么进程 有什么用
  • 企业所得税的概述
  • php怎么新建
  • 一次还本分次付息的国债会计分录
  • 基于opencv的图像处理
  • 加工费计入什么成本类别
  • 公司亏损注销了怎么处理
  • 运输中合理损耗计入采购成本
  • pytorch卷积操作
  • 销售收入是不是销售额
  • 图书为什么不能退货
  • 劳务费合同模版
  • 临过期产品
  • 没有数字的公章有效吗
  • 已冲销凭证是否可以删除
  • mysql innodb锁
  • 营业执照变更法人需要本人去吗
  • 外地预缴怎么算
  • 制作费计入什么费用
  • 调整以前年度所得
  • 支付厂房租金计入什么会计科目
  • 仓库员工工资
  • 公司办理网银
  • 如果是车间不生气怎么办
  • 管理费用怎么结转到本年利润未分配利润里了
  • 存货怎样进行账务处理
  • 购建时间是什么意思
  • mysql使用教程
  • sql2005 HashBytes 加密函数
  • centos编译安装tcpdump工具
  • Windows8.1和Ubuntu14.04双系统卸载Ubuntu的方法
  • 教大家如何重做作业
  • 搜索不到WiFi信号是怎么回事
  • windows的小技巧
  • win101909消费者版是什么意思
  • Win10 Mobile build 10586.338安装/上手体验视频
  • Linux mysql如何更改root密码以及忘记root密码的修改方法
  • windows10电脑声音
  • win8图标大小怎么调
  • Android ViewStub 布局延迟加载
  • java多线程用法
  • [置顶]JM259194
  • unity3d quaternion
  • python3.9爬取网页教程
  • js设置
  • android 开源框架
  • python中的stringvar
  • 为何会税控盘时钟异常
  • 外经证核销在公司所在地还是在项目所在地
  • 发票清单盖章样本图片
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设