PHP编码规范
php 编码规则

php 编码规则
php的编码规则主要包括以下几个方面:
1.缩进和空格:php代码应该使用一致的缩进方式,通
常使用四个空格作为缩进。
在代码块之间使用空格进行分隔,例如在条件语句、循环、函数调用等地方。
2.命名规范:php变量和函数名应该使用小写字母和下
划线,避免使用驼峰命名法。
类名应该使用大写字母和驼峰命名法。
3.引号使用:字符串应该使用单引号或双引号括起来,
避免混合使用不同类型的引号。
4.代码块:php代码块应该使用花括号({})进行包围,即使代码块为空也应该包含花括号。
5.注释:php代码中应该使用注释来解释代码的功能和
目的。
注释可以使用单行注释(//)或多行注释(/* */)。
6.代码格式化:php代码应该遵循一致的格式化规则,
可以使用代码编辑器或IDE自动格式化功能来确保代码的整齐和一致性。
以上是php编码规则的一些基本要点,当然还有其他一些细节需要注意,如变量命名规范、函数命名规范、代码简洁度等。
PHP编码规范

PHP编码规范这是给⼩组制定的php编码规范该 PHP 编码规范基本上是同 PSR 规范的。
有⼀部分的编码规范 PSR 中是建议,此编码规范会强制要求。
此编码规范是以 PSR-1 / PSR-2 / PSR-2扩展为蓝本,并增加了相应的细节说明。
通则基本编码PHP代码必须使⽤<?php ?>长标签或<?= ?>短输出标签;⼀定不可使⽤其它⾃定义标签。
PHP代码必须且只可使⽤不带BOM的UTF-8编码⼀份PHP⽂件中应该要不就只定义新的声明,如类、函数或常量等不产⽣从属效应的操作,要不就只有会产⽣从属效应的逻辑操作,但不该同时具有两者“从属效应”(side effects)⼀词的意思是,仅仅通过包含⽂件,不直接声明类、函数和常量等,⽽执⾏的逻辑操作。
“从属效应”包含却不仅限于:⽣成输出、直接的require或include、连接外部服务、修改 ini 配置、抛出错误或异常、修改全局或静态变量、读或写⽂件等。
以下是⼀个错误的例⼦,⼀份包含声明以及产⽣从属效应的代码:<?php// 从属效应:修改 ini 配置ini_set('error_reporting', E_ALL);// 从属效应:引⼊⽂件include "file.php";// 从属效应:⽣成输出echo "<html>\n";// 声明函数function foo(){// 函数主体部分}下⾯是⼀个范例,⼀份只包含声明不产⽣从属效应的代码:<?php// 声明函数function foo(){// 函数主体部分}// 条件声明**不**属于从属效应if (! function_exists('bar')) {function bar(){// 函数主体部分}}⽂件所有PHP⽂件必须使⽤Unix LF (linefeed)作为⾏的结束符。
psr 规范

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编码规范

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⾏以内。
php编码规范

php编码规范PHP编码规范是一组约定俗成的规范,用于指导PHP开发者在编写PHP代码时的一些基本规则和最佳实践。
遵循编码规范可以提高代码的可读性、可维护性和可扩展性,提高团队协作效率,减少潜在的BUG。
下面是一个包含大概1000字的PHP编码规范,用于参考:1. 缩进使用4个空格,不要使用制表符。
2. 使用Unix风格的换行符(LF),不使用Windows风格的换行符(CRLF)。
3. 文件名使用小写字母,单词之间使用下划线分隔,如:my_class.php。
4. 类名使用驼峰命名法,首字母大写,如:MyClass。
5. 方法名、变量名使用驼峰命名法,首字母小写,如:myMethod、myVariable。
6. 常量名使用全大写字母,单词之间使用下划线分隔,如:MY_CONSTANT。
7. 代码行长度不超过80个字符。
8. 使用空行将代码块分隔开来,提高可读性。
如:类的方法之间、方法内的逻辑块之间。
9. 使用注释解释代码的用途,特别是复杂的逻辑或处理。
10. 使用类型声明,标明函数的参数和返回值的类型。
如:function myFunction(string $param): int。
11. 尽量避免使用全局变量,尽量使用依赖注入的方式传递参数。
12. 使用命名空间(Namespace)进行代码组织和隔离,避免命名冲突。
13. 使用PHP内建函数时,参数之间用逗号分隔,参数和函数名之间没有空格。
如:strlen($str)。
14. 类的属性和方法的可见性要标明清楚,根据需要使用public、protected、private进行修饰。
15. 使用异常进行错误处理,而不是依赖返回值来判断是否发生错误。
16. 在代码中使用单引号''来表示字符串,除非特殊情况需要使用双引号""。
17. 不要使用eval函数执行动态代码,避免安全风险。
18. 使用PDO或mysqli来处理数据库操作,避免SQL注入和其他安全问题。
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编码格式

php编码格式
PHP的编码格式主要有两种,分别是ASCII和UTF-8。
ASCII (American Standard Code for Information Interchange) 是一个将字符转换为数字的编码系统,它使用1个字节(8位)表示一个字符。
UTF-8 (Unicode Transformation Format-8) 是一种使用变长编码的Unicode字符编码方式。
它可以表示世界上几乎所有的字符,并且兼容ASCII码。
UTF-8使用1至4个字节来表示一个字符,较ASCII编码更加灵活。
在PHP中,可以通过设置相关的编码选项来指定使用哪种编码格式。
例如:
```php
// 使用ASCII编码
header('Content-Type: text/html; charset=ASCII');
// 使用UTF-8编码
header('Content-Type: text/html; charset=UTF-8');
```
一般来说,推荐使用UTF-8编码格式,因为它可以表示更多的字符,并且能够处理多种语言的文本。
在使用PHP程序开发时,也可以使用内置的函数如
mb_convert_encoding()来进行编码转换操作。
项目开发规范(编码规范、命名规范、安全规范、前端优化、源码提交规范、代码维护规范、产品发布规范)

项⽬开发规范(编码规范、命名规范、安全规范、前端优化、源码提交规范、代码维护规范、产品发布规范)第⼀节:编码过程的命名约定(编码命名规范)==========================================================================================================================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等)类的⽂件名均以命名空间定义,并且命名空间的路径和类库⽂件所在路径⼀致。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PHP编码规范1. 介绍1.1. 标准化的重要**标准化问题在某些方面上让每个人头痛,让人人都觉得大家处于同样的境地。
这有助于让这些建议在许多的项目中不断演进,许多公司花费了许多星期逐子字逐句的进行争论。
标准化不是特殊的个人风格,它对本地改良是完全开放的。
1.2. 优点当一个项目尝试着遵守公用的标准时,会有以下好处:· 程序员可以了解任何代码,弄清程序的状况· 新人可以很快的适应环境· 防止新接触php的人出于节省时间的需要,自创一套风格并养成终生的习惯· 防止新接触php的人一次次的犯同样的错误· 在一致的环境下,人们可以减少犯错的机会· 程序员们有了一致的敌人1.3. 缺点· 因为标准由一些不懂得php的人所制定,所以标准通常看上去很傻· 因为标准跟我做的不一样,所以标准通常看上去很傻· 标准降低了创造力· 标准在长期互相合作的人群中是没有必要的· 标准强迫太多的格式1.4. 讨论许多项目的经验能得出这样的结论:采用编程标准可以使项目更加顺利地完成。
标准是成功的关键么?当然不。
但它们可以帮助我们,而且我们需要我们能得到的所有的帮助!老实说,对一个细节标准的大部分争论主要是源自自负思想。
对一个合理的标准的很少决定能被说为是缺乏技术**的话,那只是口味的原因罢了。
所以,要灵活的控制自负思想,记住,任何项目都取决于团队合作的努力。
1.5. 解释1.5.1. 标准实施首先应该在开发小组的内部找出所有的最重要的元素,也许标准对你的状况还不够恰当。
它可能已经概括了 重要的问题,也可能还有人对其中的某些问题表示强烈的反对。
无论在什么情况下,只要最后顺利的话,人们将成熟的明白到这个标准是合理的,然后其他的程序员们也会发现它的合理**,并觉得带着一些保留去遵循这一标准是值得的。
如果没有自愿的合作,可以制定需求:标准一定要经过代码的检验。
如果没有检验的话,这个解决方案仅仅是一个建立在不精确的基础上的一大群可笑的人。
1.5.2. 认同观点1. 这行不通;2. 也许可行吧,但是它既不实用又无聊;3. 这是真的,而且我也告诉过你啊;4. 这个是我先想到的;5. 本来就应该这样。
如果您带着否定的成见而来看待事物的话,请您保持开放的思想。
你仍可以做出它是废话的结论,但是做出结论的方法就是你必须要能够接受不同的思想。
请您给自己一点时间去做到它。
1.5.3. 项目的四个阶段1. 数据库结构2. 设计3. 数据层4. HTML层2. 命名规则2.1. 合适的命名命名是程序规划的核心。
古人相信只要知道一个人真正的名字就会获得凌驾于那个人之上的不可思议的力量。
只要你给事物想到正确的名字,就会给你以及后来的人带来比代码更强的力量。
别笑!名字就是事物在它所处的生态环境中一个长久而深远的结果。
总的来说,只有了解系统的程序员才能为系统取出最合适的名字。
如果所有的命名都与其自然相适合,则关系清晰,含义可以推导得出,一般人的推想也能在意料之中。
如果你发觉你的命名只有少量能和其对应事物相匹配的话, 最好还是重新好好再看看你的设计吧。
2.2. 类命名· 在为类(class )命名前首先要知道它是什么。
如果通过类名的提供的线索,你还是想不起这个类是什么的话,那么你的设计就还做的不够好。
· 超过三个词组成的混合名是容易造成系统各个实体间的混淆,再看看你的设计,尝试使用(CRC Session card)看看该命名所对应的实体是否有着那么多的功用。
· 对于派生类的命名应该避免带其父类名的诱惑,一个类的名字只与它自身有关,和它的父类叫什么无关。
· 有时后缀名是有用的,例如:如果你的系统使用了代理(agent ),那么就把某个部件命名为“下载代理”(DownloadAgent)用以真正的传送信息。
2.3. 方法和函数命名· 通常每个方法和函数都是执行一个动作的,所以对它们的命名应该清楚的说明它们是做什么的:用CheckForErrors()代替ErrorCheck(),用DumpDataToFile()代替DataFile()。
这么做也可以使功能和数据成为更可区分的物体。
· 有时后缀名是有用的:o Max ‐ 含义为某实体所能赋予的最大值。
o Cnt ‐ 一个运行中的计数变量的当前值。
o Key ‐ 键值。
例如:RetryMax 表示最多重试次数,RetryCnt 表示当前重试次数。
· 有时前缀名是有用的:o Is ‐ 含义为问一个关于某样事物的问题。
无论何时,当人们看到Is就会知道这是一个问题。
o Get ‐ 含义为取得一个数值。
o Set ‐ 含义为设定一个数值例如:IsHitRetryLimit。
2.4. 缩写词不要全部使用大写字母· 无论如何,当遇到以下情况,你可以用首字母大写其余字母小写来代替全部使用大写字母的方法来表示缩写词。
使用: GetHtmlStatistic.不使用: GetHTMLStatistic.理由· 当命名含有缩略词时,人们似乎有着非常不同的直觉。
统一规定是最好,这样一来,命名的含义就完全可以预知了。
举个NetworkABCKey的例子,注意C是应该是ABC里面的C还是key里面的C,这个是很令人费解的。
有些人不在意这些,其他人却很讨厌这样。
所以你会在不同的代码里看到不同的规则,使得你不知道怎么去叫它。
例如class FluidOz // 不要写成 FluidOZclass GetHtmlStatistic // 不要写成 GetHTMLStatistic2.5. 类命名· 使用大写字母作为词的分隔,其他的字母均使用小写· 名字的首字母使用大写· 不要使用下划线('_')理由· 根据很多的命名方式,大部分人认为这样是最好的方式。
例如class NameOneTwoclass Name2.6. 类库命名· 目前命名空间正在越来越广泛的被采用,以避免不同厂商和团体类库间的类名冲突。
· 当尚未采用命名空间的时候,为了避免类名冲突,一般的做法是在类名前加上独特的前缀,两个字符就可以了,当然多用一些会更好。
例如John Johnson的数据结构类库可以用Jj做为前缀,如下:class JjLinkList{}另一种折中方式是建立包含类库目录(事实上Java也是这么做的),以不通的目录代表不同的命名空间。
例如Microsoft的数据库相关类库可以在:/classes/com/Microsoft/ Database/DbConn.phpApache的数据库相关类库可在:/classes/org/apache/Database/DbConn.php2.7. 方法命名· 采用与类命名一致的规则理由· 使用所有不同规则的大部分人发现这是最好的折衷办法。
例如class NameOneTwo{function DoIt() {};function HandleError() {};}2.8. 类属**命名· 属**命名应该以字符‘m’为前缀。
· 前缀‘m’后采用于类命名一致的规则。
· ‘m’总是在名字的开头起修饰作用,就像以‘r’开头表示引用一样。
理由· 前缀'm'防止类属**和方法名发生任何冲突。
你的方法名和属**名经常会很类似,特别是存取元素。
例如class NameOneTwo{function VarAbc() {};function ErrorNumber() {};var $mVarAbc;var $mErrorNumber;var $mrName;}2.9. 方法中参数命名· 第一个字符使用小写字母。
· 在首字符后的所有字都按照类命名规则首字符大写。
理由· 可以区分方法中的一般变量。
· 你可以使用与类名相似的名称而不至于产生重名冲突。
例如class NameOneTwo{function StartYourEngines(&$rSomeEngine,&$rAnotherEngine);}2.10. 变量命名· 所有字母都使用小写· 使用'_'作为每个词的分界。
理由· 通过这一途径,代码中变量的作用域是清晰的。
· 所有的变量在代码中都看起来不同,容易辨认。
例如function HandleError($errorNumber){$error = OsErr($errorNumber);$time_of_error = OsErr‐>GetTimeOfError();$error_processor = OsErr‐>GetErrorProcessor();}2.11. 引用变量和函数返回引用· 引用必须带‘r’前缀理由· 使得类型不同的变量容易辨认· 它可以确定哪个方法返回可更改对象,哪个方法返回不可更改对象。
例如class Test{var mrStatus;function DoSomething(&$rStatus) {};function &rStatus() {};}2.12. 全局变量· 全局变量应该带前缀‘g’。
理由· 知道一个变量的作用域是非常重要的。
例如global $gLog;global &$grLog;2.13. 定义命名 / 全局常量· 全局常量用'_'分隔每个单词。
理由这是命名全局常量的传统。
你要注意不要与其它的定义相冲突。
例如define("A_GLOBAL_CONSTANT", "Hello world!");2.14. 静态变量· 静态变量应该带前缀‘s’。
理由· 知道一个变量的作用域是非常重要的。
例如function test(){static $msStatus = 0;}2.15. 函数命名· 函数名字采用C GNU的惯例,所有的字母使用小写字母,使用'_'分割单词。
理由· 这样可以更易于区分相关联的类名。
例如function some_bloody_function(){}2.16. 错误返回检测规则· 检查所有的系统调用的错误信息,除非你要忽略错误。
· 为每条系统错误消息定义好系统错误文本以便include。