PHP_代码风格规范
- 格式:doc
- 大小:98.50 KB
- 文档页数:13
phpstorm 格式化规则-概述说明以及解释1.引言1.1 概述在PHPStorm中,格式化规则是指定义代码风格和排版的规则,以确保团队成员在编写和阅读代码时有一致的体验。
通过设置格式化规则,可以提高代码的可读性和统一性,减少因个人编码风格差异而导致的代码混乱问题。
本文将介绍PHPStorm的格式化规则,包括如何设置和应用这些规则,以及其在代码编写过程中的优势和重要性。
1.2 文章结构文章结构是指文章的篇章组织和段落构成,它对于整篇文章的逻辑性和连贯性起着至关重要的作用。
一个良好的文章结构可以使读者更好地理解文章内容,抓住主题思想,理清思路。
文章结构通常包括引言、正文和结论三部分。
其中引言部分介绍文章的主题和背景,引起读者的兴趣,正文部分是文章的主体部分,展开论述和阐述观点,结论部分总结全文内容,给出自己的看法和建议。
在本篇文章中,我们首先介绍了PHPStorm的概述和目的,然后在正文部分详细介绍了PHPStorm的简介和格式化规则,以及这些规则的优势。
最后在结论部分对全文内容进行总结,并提出应用建议和展望未来的发展方向。
通过以上结构的安排,本文将会更加清晰地呈现出PHPStorm格式化规则的相关内容,为读者提供更好的阅读体验。
1.3 目的PHPStorm是一款功能强大的集成开发环境,其格式化规则对于代码的可读性和整洁性至关重要。
本文的目的是介绍PHPStorm的格式化规则,帮助读者了解如何通过这些规则来提高代码的质量和可维护性。
我们将详细讨论PHPStorm的格式化规则及其优势,指导读者如何有效地使用这些规则来优化他们的代码编写过程。
通过本文的介绍,读者将能够更好地利用PHPStorm的功能,提高代码的质量和效率,从而更好地应对软件开发的挑战。
2.正文2.1 PHPStorm简介PHPStorm是一款由JetBrains开发的集成开发环境(IDE),专门用于PHP语言开发。
它提供了丰富的功能和工具,帮助开发人员提高工作效率和代码质量。
psr 规范PSR(PHP Standards Recommendations)是由PHP-FIG(PHP Framework Interop Group)组织制定的一系列PHP编码规范。
这些规范旨在为PHP开发人员提供统一的代码风格和最佳实践,以便增加代码的可读性、可维护性和可扩展性。
以下是对PSR规范的简要描述:1. PSR-1: 基本编码规范PSR-1规范主要定义了PHP代码的基本要求,包括文件命名空间、文件编码方式、类命名和文件自动加载规则等。
2. PSR-2: 代码风格指南PSR-2规范描述了PHP代码的一般样式规则,如缩进、行长度、命名约定、代码块间的空格等。
遵循这些规范可以提高代码的可读性和一致性。
3. PSR-3: 日志接口PSR-3规范定义了一套通用的日志接口,使得不同的日志库可以互相兼容。
该规范主要包括日志级别、记录消息和记录上下文等内容。
4. PSR-4: 自动加载规范PSR-4规范指定了类和命名空间之间的映射关系,使得自动加载类变得更加简单和可维护。
该规范要求将类的命名空间与文件路径结构一致。
5. PSR-6: 缓存接口PSR-6规范定义了一套通用的缓存接口,使得不同的缓存库可以互相兼容。
该规范主要包括缓存快照、读写操作和数据过期等内容。
6. PSR-7: HTTP消息接口PSR-7规范定义了一套通用的HTTP消息接口,包括请求和响应的处理、URI解析和文件上传等功能。
该规范使得不同的HTTP库可以互相兼容。
PSR规范的制定和推广对于提高PHP开发人员的编码质量和效率起到了积极的推动作用。
遵循PSR规范可以使代码更易于理解、维护和协作,也有助于提高整个开发团队的编码水平和一致性。
因此,对于PHP开发人员来说,熟悉并遵循PSR 规范是非常重要的。
PHP编码规范1. 前⾔源码⽂件必须采⽤UTF-8编码,且不得有BOM头,某些历史遗留的GBK模块除外。
编码风格没有太多的好坏之分, 最重要的是风格保持⼀致,编码规范有助于规范我们编码的风格,使代码具有更好的可读性。
PHP在百度内部应⽤得越来越⼴泛,但是却缺乏相应的编码规范⽀持,编码风格百家齐放,不利于我们代码的维护和传承,根据⼤家平时的开发情况,制定了此PHP编码规范。
每项规范前⾯的[强制]代表该规范需要强制执⾏,[建议]代表推荐执⾏但不强制。
注: ⽂中所有的变量名前⾯为了⽅便没有加”$”, ⽰意即可。
本⽂档风格约定部分可能跟你的喜好有冲突,请尽量⽤包容的⼼态来阅读。
有任何问题或建议,欢迎跟我们讨论:2. 排版2.1. [强制][PHP002] 程序块要采⽤缩进风格编写,缩进的空格数建议为4个,单模块内必须统⼀。
解释不同的缩进风格对代码的可读性影响很⼤,以tab为缩进单位在不同的tab step 下可读性也相差很多,所以将缩进定为⼀个soft tab即4个空格,这样在所有环境下缩进都会保持⼀致。
2.2. [建议]关键字与其后的左括号之间有⼀个空格,⽽函数名与左括号之间不应有任何字符包括空格。
解释虽然很多情况下编辑器的highlight已经做了区分,但是从格式上区分关键字和函数适⽤于所有的情况。
⽰例关键字 if (a > b) 函数名 funcA()2.3. [建议]开始的⼤括号位于⼀⾏的末尾,结束的括号位于最末⼀⾏后,且独占⼀⾏。
⾸括号也可另起⼀⾏,但⼀个模块内必须统⼀。
⽰例if (a > b) { }2.4. [强制] [PHP003] if/while等结构体,即使只有⼀⾏,也必须加上花括号,不得写成⼀⾏。
解释这样做可读性更好,并且⽅便修改。
⽰例if (a > b) { a = 1; }2.5. [建议]⼀⾏代码不得超过120个字节,建议控制在80字节内;⼀个函数不得超过500⾏,建议控制在100⾏以内。
psr规范PSR(PHP Standard Recommendation)是PHP FIG (Framework Interop Group)提出的一系列关于编码风格、代码规范和最佳实践的建议。
下面将详细介绍PSR规范的一些重要内容。
一、命名规范1. 命名空间使用大写字母,其中每个单词首字母大写(例:NamespaceName)。
2. 类和接口的命名遵循骆驼拼写法,首字母大写(例:ClassName)。
3. 方法和属性的命名同样遵循骆驼拼写法,首字母小写(例:methodName,propertyName)。
4. 常量的命名全部大写,使用下划线分隔单词(例:CONSTANT_NAME)。
二、代码风格1. 使用四个空格缩进来表示代码块。
2. 方法之间留一个空行,类的成员之间也要留一个空行。
3. 使用大括号将代码块括起来,左大括号不另起一行。
4. if、else、while、for等关键字后加一个空格。
5. 算术运算符、赋值运算符和比较运算符两侧加一个空格。
三、注释规范1. 在代码的关键部分加上注释,解释代码的意图和作用。
2. 注释使用PHPDoc格式,包括类、方法、属性的注释。
3. 注释的第一行用来简要描述该代码的作用。
4. 注释块之前用一个空行隔开。
四、错误处理1. 使用try-catch语句来处理异常。
2. 抓住特定的异常,根据不同的异常类型执行不同的处理逻辑。
3. 在捕获异常时,尽量不要简单地输出异常堆栈信息,而是提供有意义的提示。
五、自动加载规范1. 使用PSR-4规范来加载类文件。
2. 每个命名空间必须有一个对应的基础目录。
3. 类的命名空间必须和目录结构一致。
六、测试规范1. 使用PHP的内置测试框架PHPUnit来编写和运行测试。
2. 测试代码必须位于tests目录下。
3. 测试文件名和测试类名必须和被测试的类名保持一致,以Test作为后缀。
以上是PSR规范的一些重要内容,遵循这些规范可以提高代码的可读性、可维护性和可扩展性,有利于多人协作开发。
psr规范PSR 规范是 PHP 社区制定的规范和标准,以促进开发人员编写出更具可读性、可维护性和可重用性的 PHP 代码。
PSR 是PHP Standard Recommendation 的缩写,意为 PHP 标准建议。
今天我来详细介绍一下 PSR 规范。
PSR 规范的目标是提供一套统一的规范,使 PHP 代码可以跨不同的项目和开发团队之间进行共享和协作。
这样做有助于提高代码的质量、减少维护成本,并提供一致的开发体验。
PSR 规范分为多个不同的部分,每个部分都涵盖了不同方面的规范。
以下是其中一些重要的部分:1. PSR-1:基本编码规范这个规范定义了 PHP 代码的基本结构和编码风格。
它要求使用 <?php 标记开始 PHP 代码,禁止使用闭合标记 ?>。
此外,还规定了类名使用 StudlyCase 命名法,方法名和属性名使用camelCase 命名法,常量名使用全大写字母和下划线。
此外,还规定了对代码缩进使用四个空格,并要求遵循一些常见的编码约定。
2. PSR-4:自动加载规范这个规范定义了如何组织和加载 PHP 类文件。
它要求将每个命名空间与一个根目录对应起来,类文件名必须与类名一致,并按照目录结构进行存储。
PSR-4 规范简化了代码的自动加载过程,使得在项目中使用类自动加载更加方便和统一。
3. PSR-12:扩展的编码风格规范这个规范扩展了 PSR-1 中的编码风格要求,提供了更详细的编码规范。
它包括对代码缩进、空白行、注释、命名空间、类和方法的结构等方面的具体规定。
PSR-12 旨在进一步统一PHP 代码的编码风格,简化代码的维护和阅读。
除了上述几个主要的规范外,还有一些其他的 PSR 规范,如PSR-2(已废弃,合并到 PSR-12 中)、PSR-3(日志接口)、PSR-6(缓存接口)等。
每个规范都有其特定的目的和规定,开发者可以根据自己的需求选择适合的规范。
遵循 PSR 规范的好处是明显的。
项⽬开发规范(编码规范、命名规范、安全规范、前端优化、源码提交规范、代码维护规范、产品发布规范)第⼀节:编码过程的命名约定(编码命名规范)==========================================================================================================================PHP编码规范=============================================================================================================================PSR(PHP Standard Recommendations,PHP标准规范)是由PHP FIG组织制定的PHP规范,是PHP开发的实践标准。
主要包含基础编码规范、编码风格规范、⽇志接⼝规范、缓存接⼝规范、HTTP消息接⼝规范等。
1. 【必须】代码必须使⽤4个空格符⽽不是「Tab 键」进⾏缩进。
使⽤空格⽽不是「tab键缩进」的好处在于,避免在⽐较代码差异、打补丁、重阅代码以及注释时产⽣混淆。
并且,使⽤空格缩进,让对齐变得更⽅便。
2. 【必须】类的属性和⽅法必须添加访问修饰符(private、protected 以及 public),abstract 以及 final 必须声明在访问修饰符之前,⽽static 必须声明在访问修饰符之后。
3. 【必须】PHP所有关键字必须全部⼩写。
常量 true 、false 和 null 也必须全部⼩写。
4. 【不该】类的属性和⽅法不该使⽤下划线作为前缀,来区分是 protected 或 private。
⽬录和⽂件⽬录使⽤⼩写+下划线。
(参考linux⽬录命名,全部⼩写,linux⽬录单词间没有分隔符,如/var/spool/clientqueue,/etc/inittab,/bin/dnsdomainname等)类的⽂件名均以命名空间定义,并且命名空间的路径和类库⽂件所在路径⼀致。
PSR代码规范PHP推荐标准⽅⾯的概念,也就是PSR代码规范,从⽽掌握更加规范的编码⽅式。
⼀.暴露问题当我们做PHP快速开发时,必然要选择各种合适我们当前项⽬的框架。
但是,不同的框架开发年代、⽅式、思维都有所不同。
导致的结果:不能与其它框架实现共享代码。
⽐如A框架的某⼀个功能库很棒,但是现在⽤的B框架,移植的成本就变的很⼤。
所以,框架与框架之间并没有考虑过互相通信。
对于开发者来说,这么做的效率⾮常的低。
当⼤家意识到这种问题时,⼀个⾃发的组织PHP-FIG讨论如何提升框架之间的通信以及如何提升开发者的开发效率。
进⽽制定了⼀系列的推荐规范,来加⼤代码之间的联系,改进框架之间的共享能⼒。
⼆.PSR诞⽣PSR即:PHP推荐标准。
⽬前通过审核的有PSR1-PSR4,还有最近的6和7。
重点研究已经成熟的前四个,对于初学者来说,可以起到⼀个很好的代码规范作⽤。
早些时候还有⼀个PSR0规范,但已经被PHP-FIG废弃从⽽被PSR4取代。
三.PSR1-4风格详解PSR-1:基本的代码风格PSR-1 是最为基础的 PHP 代码规范,也是最容易遵守的标准。
PSR-1 编码规范:1.标签风格必须严格的把PHP代码放在<?php ?>或<?= ?>标签中,不可以使⽤其它任何⾃定义的标签句法。
<!doctype html><html lang="zh-cn"><head><meta charset="UTF-8"><title>Document</title></head><body>//多⾏显⽰⽅式<?phpecho '多⾏';?>//单⾏显⽰⽅式<?='单⾏'?></body></html>打印显⽰:多⾏单⾏2.字符编码PHP⽂件必须严格使⽤⽆BOM的UTF-8编码,在PHP专⽤的IDE上,设置的UTF-8编码基本都是⽆BOM的。
PHP项目开发规范文档1.简介PHP是一种开源的脚本语言,广泛用于Web开发。
本文档旨在提供PHP项目开发的规范,以保证代码的可读性、可维护性和可扩展性。
2.代码风格-缩进:使用4个空格进行缩进。
- 命名规范:使用驼峰命名法(camel case)命名变量、函数和类。
-常量命名规范:使用全大写字母和下划线命名。
-注释:用注释来解释复杂的代码逻辑和关键性的功能。
-换行:每行代码长度不应超过80个字符。
当一个表达式太长无法放在一行时,可以分成多行,并使用括号或者点操作符连接。
3.文件和目录结构- 将不同类别的文件分别放在不同的目录中,例如将数据库相关的文件放在一个名为"database"的目录中。
- 使用适当的文件命名来描述文件的功能,例如"UserController.php"。
4.安全性考虑-永远不要相信用户的输入,始终进行数据有效性验证和过滤。
- 使用准备好的语句(prepared statements)和参数绑定(parameter binding)来防止SQL注入攻击。
- 对于敏感数据,如密码或社会安全号码,至少应进行哈希(hash)加密。
5.性能优化-减少数据库查询次数:使用适当的索引、缓存查询结果或使用批量操作来减少数据库查询次数。
-尽量使用更高效的函数和算法来提高代码的性能。
-避免在循环中执行过多的数据库查询或文件读写操作。
6.异常处理- 使用try-catch语句来捕获并处理异常。
- 使用异常层次结构来处理不同类型的异常,例如自定义异常类继承自PHP的Exception类。
7.文档注释-使用文档注释来说明函数和类的使用方法、输入参数、返回值和异常情况。
- 使用标准的文档注释格式,例如PHPDoc。
8.版本控制- 使用版本控制系统(如Git)来管理代码,确保代码的版本可追踪和可恢复。
- 尽量使用分支来开发新功能或修复bug,并在合并到主分支之前进行代码审查和测试。
PHP 代码风格概述本文档指定基本的php 编码风格约定。
1. 文档历史日期作者更新的概要注意2010-03-15 Allen备注本文档中风格和格式的用法:类别名称•项目标题目录Coding Style Conventions (1)1. General Rules (3)2. Formatting (4)3. Naming (9)4. Documentation (11)5. Programming (14)6. Others (17)1. 通用规则原则•简单, 清楚, 完整性, 一致性•鲁棒性•第一次就要做正确2. 格式P H P•文本文件的编码使用'UTF-8'•文本文件换行定界符使用'\n' (Unix 类型)当我们创建和编辑文件时,使用Unix换行('\n')代替DOS换行('\r\n');•约定一个tab等于四个空格tab 在不同的平台下表现不同,对于tab而言总是使用空格代替他设置所有编辑器中的tab键等于四个空格•PHP 标签: 总是使用'<?php ', 丢弃'<? ?>'•缩进: 在PHP中的每个缩进都使用tab等于四个空格•使用空行分隔逻辑块•行末尾不允许有空格•使用"else if" 代替"elseif"•对于'if', 'while', 'for', 等逻辑块使用括号括起,哪怕只有一行逻辑,便于阅•不允许在新行上写开口括【左括号】••函数应该遵循下列规则函数名字与参数列表的开括号之间没有空格,他们两个看做一整体,这个整体的两边需要有各有一个空格,然后参数列表里,每个参数相对前一个参数需要有一个空格。
•参数列表中有默认值的参数应放在参数列表最后面••字符串: 普通的字符串使用单引号('),如果字符串中需要解析PHP变量时使用双引号("")在PHP中双引号(") 解析,单引号(')不解析. 在双引号字符串上PHP要做额外的工作,所以他们两个有一些微妙的性能差别。
即便双引号中的变量可以被解释,但也只限于简单的变量名,当使用复杂的名字时,必须将变量独立出去,如一个变量组成2维数组这样的句子不能被正确解释,复杂的变量名,可以将变量用大括号括起来•为了保证一致性,在类中的不是其他描述符['private','protected']的成员函数和成员变量都要添加关键字['public'] ,在使用['private','protected']描述符的成员函数和成员变量的前面加下划线[’_’],['public']描述符不需要下划线[’_’]S Q L••所有的数据库名、表名、字段名、别名等全部加上反引号[`user`]•在一句SQL中明确的写出字段名是必须的,不要使用'*'去代替,除非你需要•总是使用'<>' 代替'!='•总是使用'AND' 代替'&&'•总是使用'OR' 代替'||'•使用'{field} BETWEEN [min] AND [max]' 代替'{field} >= [min] AND {field} <= [max]'•相应地, 使用'{field} NOT BETWEEN [min] AND [max]'•使用时间作为判断条件时,除UNIX时间戳外,时间格式应该是与数据库中的字段格式一致3. 命名约定P H P•关于'null', 'true', 'false'所有字符全部小写•使用有意义的名字命名关于文件、类、函数、变量、参数等使用有意义的名字命名,不要使用缩写词。
除了在“for" 循环的表达式中可使用$i, $j和异常$e•目录、文件名:全部小写,使用下划线[‘_’]分隔单词例子: admin_member_list.php, admin_member_lookup.php, file_system•关于一组有关联操作的文件使用前缀来便于分辨例子: admin_member_list.php, admin_member_lookup.php•类名:Class names: 使用能够描述出类的大概含义的单词命名;每个单词首字母大写,多个单词使用驼峰式。
例子: Circle, FilledCircle, ShadedFilledCircle•全局函数、类成员函数:第一个单词的第一个字母小写,其他单词的第一个字母大写,多个单词使用驼峰式。
例子: draw(), drawLine(), getName()•变量、类成员变量、函数参数:第一个单词的第一个字母小写,其他单词的第一个字母大写,多个单词使用驼峰式例子: $phpSelf, $currentTheme•常量名:全部大写,使用下划线[‘_’]分隔单词例子: PI, MAX_BUFFER_SIZE以下为文件名的命名规则•.php -> 普通文件•.class.php -> 类文件•abstract_XXXX.class.php -> 抽象类•interface_XXXX.class.php -> 接口类•.def.php -> 定义常量文件•.cfg.php -> CONFIG配置文件•.fun.php-> 全局类函数文件•.aja.php -> AJAX文件•.js -> js文件•.css -> css文件•.tpl -> html 和模板文件•.swf -> flash文件S Q L•每个表和字段名使用有意义的单词命名Examples: listed, used_time•表名:全部小写,使用下划线分隔单词-两表关联的中间表所有的前缀'list_':例子: list_space_prices, list_privileges- A revision requiring approval/review process goes with 'revision_'例子: revision_space, revision_payment-状态历史记录的用'history_'开头例子: history_credit,history_transaction- 日志的使用'log_'开头例子: log_coupon, log_login•字段名:应该是名词或形容词,所有单词全部小写,使用下划线[‘_’]分隔单词例子: user_id, country_name数据库前缀是以 SNS255_4. 文档P H P••••••每个函数和类成员函数的文档注释中必需有@return标签,如果没有返回值使用@return void•* @return Website*/public function getEntityByKey($website_id) {}•/*** Adds a record into table `object_website`.* @param WebSite $website the Website object to be added* @throws ErrorMessage* @return int the newly added website id, return 0 if failed*/public function addWebsite($website) {}•不要再代码文档中使用C风格的注释•在变量赋值这种情况下、implementation details、fix purposes等,只用单行注释写在赋值表达式右边•在'//' 和注释之间没有空格,并且第一个字母不需要大写,在一行注释的末尾没有句号在没有完成或需要更多时间去完善的代码区域使用'TODO' 来标记•每个开发人员在调试后请去除调试代码S Q L•比较复杂的SQL语句需要使用注释去说明他的作用文档格式:a. -- this is one line/end line commentb. /* this is aSELECTDISTINCT `users`.`userID` AS `affiliate_id`FROM`users`, `products`, `cart`WHERE`cart`.`cartBrokerID` = '{$broker}' -- based on direct purchaseAND `cart`.`cartPaid` = 1AND `cart`.`cartProdID` = `products`.`pID`AND `products`.`pUserID` = `users`.`userID`/* query out affiliates registered during a selected period */ AND `users`.`userRegTime` BETWEEN '{$start}' AND '{$end}'5. 编程P H P•当使用if, while, for等嵌套循环时不要超过3重嵌套•写简单的函数,每个函数的长度显示不要超过一页•在函数中小心使用'echo', 'print', 'print_r' and 'die', 每个函数应该仅有一个返回值••••在一些比较语句里if (3 == $a) {},应该把数字提出到外部,使用一个变量存储,便于维护和说明其意义。
••S Q L•首先如果设置字段值为'NULL' ,在SQL语句中使用条件'{field} IS [NOT] NULL',或应该使用下来方式以避免异常:a. ... ({field} IS NULL OR {field} = '') ...b. ... ({field} IS NOT NULL AND {field} <> '') ...•••尽量少用'GROUP BY', 'ORDER BY' , 如果使用,应该在有索引的字段上使用•在'WHERE'子句后面的条件顺序应该是将最有效地条件放在最前面6. 其他类别名称•项目标题。