位置: 编程技术 - 正文

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

  • 在建工程和预付款项调整
  • 技术服务的分录
  • 消防管理费用收取标准
  • 新成立公司申报流程
  • 坏账计提坏账准备
  • 购买业务委托书计入什么科目
  • 房地产企业固定资产的折旧
  • 长期待摊费用做在什么记账凭证里
  • 汇款后又退回来是什么原因
  • 企业所得税月交还是年交
  • 一般纳税人上个月没有申报这个月申报不了
  • 纳税人首次办税补充信息表怎么填
  • 税率是3%开成5%怎么办
  • 工地人为受伤一般怎么解决
  • 加班工资算做个月工资吗
  • 税收筹划要注意哪些问题
  • 一般纳税人为其他公司制作标书怎么缴税?
  • 公司名下商品房交易开具发票
  • 地铁充值发票会透露个人账户信息吗
  • 企业支出的资产包括哪些
  • 为什么收到发票
  • 某市财政收到林业基金收入分录
  • 房地产销售广告是要约还是要约邀请?原因是什么?
  • 联想笔记本bios密码忘记了
  • 如果在XP系统中QQ音乐听不了怎么办?
  • 收到的进项发票要在多久前认证
  • 福利费不需要发票
  • wp网站迁移
  • 包装物如何做会计分录
  • 基金管理人业绩报酬分配模式
  • linux root 命令
  • vue侧边栏导航,右侧显示对应内容
  • vue运行报错
  • framework怎么用
  • 发票查真伪是什么意思
  • mfcc特征提取过程
  • php多进程处理大数据
  • 一次开票分期确认怎么弄
  • cpu power management设置
  • 非财政补助结转是什么类科目
  • 货物入库会计分录怎么做
  • css样式居中
  • 软件使用权怎么入账
  • 公司法人的分类是什么
  • 个人生产经营所得范围
  • 个人捐赠支出税前扣除条件
  • 2022年山东省固定资产投资额
  • 计提固定资产折旧是什么意思
  • 库存现金挂账多久
  • mysql数据类型char
  • 资本公积含义
  • 收据可以入账的情况
  • 营改增后建筑劳务分包开票一般几个点
  • 客户购买商品的三要素
  • 应交税金包括哪些税费
  • 购入汽车属于什么会计科目
  • 增值税是否计入税金及附加
  • 会计记账基础有哪两种
  • sql语句中having是什么意思
  • ghost安装器怎么用
  • 通过注册表删除脱机打印机
  • win8怎么设置定时关机
  • sqlmangr.exe - sqlmangr是什么进程 有什么用
  • 电脑上dell是什么意思
  • PureVoice.exe - PureVoice是什么进程 有什么用
  • win8系统怎么重新安装系统
  • 如何清楚windows搜索记录
  • win10系统电脑关机自动重启
  • js canvas压缩图片
  • 举例说明Java实现适配器模式
  • dos启动方式
  • 骨骼动画原理
  • jquery操作数组
  • jquery源码分析
  • unityshader插件
  • NGUI之UILocalize
  • js混杂模式
  • jquery中选择器分为哪三种
  • 申报印花税显示未维护营行业信息
  • 小额贷款公司在职人员和离职人员情节哪种轻
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设