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

Thinkphp编码规范●统一编码:UTF-8●路径规范●../Public:会被替换成当前项目的公共模板目录通常是/项目目录/Tpl/default/Public/●__PUBLIC__:会被替换成当前网站的公共目录通常是 /Public/●__TMPL__:会替换成项目的模板目录通常是/项目目录/Tpl/default/●__ROOT__:会替换成当前网站的地址(不含域名)●__APP__:会替换成当前项目的URL地址(不含域名)●__URL__:会替换成当前模块的URL地址(不含域名)●__ACTION__:会替换成当前操作的URL地址(不含域名)●__SELF__:会替换成当前的页面URL●●命名规范●类名: 首字母大写其他字母都由小写的单词组成,eg:class IndexAction●接口名: I+名称+Service,eg:interface IBussinessService(如果接口名太长了就不用services)●方法名: 第1个单词的首字母小写,后面单词的首字母大写eg:public function index(){}●方法的参数: 使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字.eg: setCounter($size){}●变量名:变量的名字必须用一个小写字母开头。
后面的单词首字母大写,eg:$user●常量名:所有字母大写,如果有多个字母应该用下划线分开,eg:THINK_PATH●Html文件命名规范●后台增加内容:add.html●后台修改内容:update.html●全部内容列表:list.html●单个内容详细显示:content.html●后台内容管理:admin.html●Lib文件命名规范●Action文件:(名字,首字母大写)+Action eg: IndexAction.class.php●Model文件:(名字,首字母大写)+Model eg:UserModel.class.php●注释规范(我们要严格按照规范完整地写出注释,因为以后要导出的API文档)●PHP代码的注释:1、类(模块)注释:例子:/*** <功能的描述>* @author <作者中文名>* @version 1.0* create Date <创建日期,格式:November 05, 2010>*/eg:/***作用于整站首页栏目和整站首页文章的存取* @author 谭锐* @version 1.0* Create Date November 03, 2010*/2、方法注释:在每个函数或者过程的前面要有必要的注释信息,包括:函数或过程名称;功能描述;输入、输出及返回值说明;调用关系及被调用关系说明等。
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编码规范=============================================================================================================================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、程序块采用缩进风格,缩进空格为4
2、关键字与其后的左括号之间有一个空格,而函数名与左括号之间不应有任何字符包括空格。
3、开始的大括号位于下一行的开始,结束的括号位于最末一行后,且都是独占一行。
4、if/while等结构体,即使只有一行,也必须加上左右花括号,不允许写成一行。
5、函数名与其后的左括号之间不应有任何空格。
函数调用的左括号与其第一个参数之间不应有任何空格。
最后一个参数与右括号之间不应有任何空格。
参数列表的逗号后面应有一个空格。
6、尽量减少if的层级嵌套。
(尽量保证在2层嵌套以内)
7、过长的表达式应另起一行。
If语句的条件若较多较长,应折行,且新行以逻辑运算符起始,与第一行if左括号后的第一个字符对齐。
折行后,每行条件具有独立而明确的语义。
8、多行的“=”可能的话,尽量对齐
9、Switch语句中每个case的break,必须和case间,保持4个空格的缩进
10、初始化array如果采用多行结构时,数据项部分需要缩进,且最后一个数据项后面的逗号不可省略
命名规范
1、全局变量以g_开头。
2、常量命名全部使用大写字符,单词之间以’_’链接
3、对于代码中的常量(尤其是魔法数字),必须用静态类中的常量来表示。
不允许直接写
在代码中。
4、关键字true,false,null必须使用小写。
5、私有函数命名需要加上’_’前缀,以及第一个单词首字母小写。
6、类的成员方法命名采用驼峰式命名,动宾结构(如:getName())。
普通方法采用过程
式函数风格命名
7、文件命名使用小写字母,单词之间以’_’连接。
8、类名以大写字母开头,每个单词的首字母大写。
抽象类与接口,以I字母开头。
父类以
Base作为类名的前缀。
注释规范
函数以及类的成员变量,视情况加上必要的注释。
可以是非文档性的注释,注意使用大白话描述。
编码原则
1、对于函数返回值的判断,特别是true/false,用===/!==来判断。
2、对于值的判断,变量需放在符号右边,值放在左边。
3、生成一个对象时,必须使用new ClassName()的方式,不能使用new ClassName
4、所有文件路径都需要利用框架中提供的QFrameConfig来写成绝对路径
5、对于长时间运行的脚本并且含有占用内存较大的变量,使用完后,必须先赋值null,
再unset掉,避免内存占用过多。
6、对于系统操作,尽可能避免使用exec等函数来调用shell命令。
7、除非特殊情况,否则不允许使用require和include,而使用对应的require_once
和include_once。
8、预定义变量一律使用短格式,即:$_POST, $_GET, $_SERVER, $_ENV, $GLOBALS,
$_COOKIE, $_SESSION, $_REQUEST, $_FILES等,不再使用长格式:$_HTTP_POST_VARS, $_HTTP_GET_VARS。
9、尽量不要再PHP代码中出现HTML标签,将模板和代码分离。
10、前端访问必须有日志记录
11、数据库读写操作必须有日志记录
12、对文件更新操作,必须先写到一个临时文件中,然后用rename/mv操作。
13、字符串尽量用’’而不是””进行引用。
14、函数允许使用默认参数,但默认参数需要放到参数列表最后面。