Php编程规范
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 psr标准

php psr标准PSR是PHP Standard Recommendations的缩写,是一系列针对PHP语言的最佳实践和标准。
这些标准旨在确保PHP代码的可读性、可维护性和一致性,并促进不同开发人员之间的协作。
以下是PSR标准的一些重要方面:1. PSR-0(已废弃):PSR-0是已废弃的自动加载规范,它规定了如何自动加载PHP类文件。
该规范要求类文件的命名必须遵循特定的命名规则,以便通过自动加载机制正确加载类文件。
2. PSR-1:PSR-1是基础编码标准,它规定了PHP代码的基本格式和命名规则。
例如,它规定了类名、常量、函数和变量的命名规则,以及代码缩进和注释的用法等。
3. PSR-2:PSR-2是样式指南,它涵盖了PHP代码的样式和格式化规范。
它包括对代码缩进、注释、命名、空格和空行的使用等方面的规定。
4. PSR-3:PSR-3是日志记录接口,它定义了一个通用的日志记录接口,以便在不同的日志记录框架之间进行互操作。
这个标准有助于统一日志记录的输出格式和级别。
5. PSR-4:PSR-4是自动加载标准,它取代了PSR-0。
PSR-4规定了如何根据类名自动加载PHP类文件,以确保在不同的项目之间实现一致的自动加载机制。
6. PSR-5:PSR-5是注释规范,旨在标准化PHP代码注释的使用。
这个标准规定了注释的格式和内容要求,以帮助提高代码的可读性和可维护性。
7. PSR-6:PSR-6是缓存接口,它定义了一个通用的缓存接口,以便在不同的缓存实现之间进行互操作。
这个标准有助于统一缓存的存储和检索操作。
8. PSR-7:PSR-7是HTTP消息接口,它定义了HTTP请求和响应的接口。
这个标准使得PHP代码能够更加方便地处理HTTP请求和响应,并提高了不同框架之间的互操作性。
9. PSR-8:PSR-8是通用类型名,它规定了PHP中通用类型的名称和使用方式。
这个标准有助于统一不同框架和库之间的类型名称,提高代码的可读性和可维护性。
psr规范

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规范的一些重要内容,遵循这些规范可以提高代码的可读性、可维护性和可扩展性,有利于多人协作开发。
编程的规范

编程的规范编程规范是指为了提高程序可读性和可维护性而定制的一套规则和准则。
在软件开发中,编程规范是非常重要的,它可以帮助团队成员共同遵守统一的代码风格,减少错误和冲突,提高代码的质量和可靠性。
下面是一些常见的编程规范:1. 命名规范:变量、函数、类等命名要具有描述性,易于理解和识别。
避免使用缩写和简写,除非是常用的缩写。
对于常量,使用全大写字母和下划线来表示。
命名应该是有意义的,避免使用无意义的名字。
2. 缩进和空格:使用一致的缩进和空格规范,增强代码的可读性。
推荐使用四个空格作为一个缩进级别。
3. 注释规范:在代码中适当加入注释,解释代码的意图、算法和特殊处理等。
注释应该简洁明了,不应该重复代码的功能。
注释要求使用清晰的语言和正确的语法。
4. 预处理指令的使用:在适当的地方使用预处理指令。
预处理指令可以帮助代码的可维护性,但要谨慎使用,避免滥用。
5. 函数和方法定义规范:函数和方法应该尽量遵循单一职责原则和高内聚低耦合的原则。
函数和方法的命名应该具有描述性,清楚地表示其功能和输入输出。
6. 异常处理规范:在程序中适当地处理异常,并提供有意义的错误提示。
不要在应用程序中使用异常处理来掩盖错误,应该尽早发现和处理错误。
7. 文件结构和组织规范:合理组织代码结构,使其易于管理和维护。
将相关的代码放在一起,使用适当的文件夹和命名约定。
8. 关键字和语法规范:正确使用关键字、语法和语义。
不要使用过时的语法或不推荐的写法。
9. 编码风格规范:统一代码的格式和风格,例如使用花括号的位置、空格的使用等。
这有助于提高代码的可读性。
10. 版本控制规范:合理使用版本控制工具,如Git,管理代码的不同版本,并遵循一套团队约定的工作流程。
总之,编程规范是一种约定俗成的行为准则,有助于提高开发效率,降低维护成本,并保证代码质量的稳定性。
一个好的编程规范能够让代码易于理解、可维护和协作,减少错误和风险。
因此,在开发过程中应该严格遵守编程规范,并不断改进和优化规范。
掌握PHP技巧

掌握PHP技巧一、介绍PHP是一种开源、跨平台的脚本语言,常用于Web开发领域。
掌握PHP技巧能够帮助开发者更高效地开发Web应用程序。
二、基本语法1. 变量声明:使用$符号声明变量,例如 $name = "Tom";2. 数据类型:包括字符串、整数、浮点数、布尔值等;3. 运算符:包括算术运算符、比较运算符、逻辑运算符等;4. 控制结构:包括if语句、for循环、while循环等;5. 函数:使用function关键字声明函数,例如 function sayHello(){echo "Hello World!";}6. 数组:使用array()函数声明一个数组,例如 $arr =array("Tom", "Jerry", "Spike");三、常见PHP技巧1. 模板引擎:使用Smarty、Blade等模板引擎可以分离PHP代码和HTML代码,提高代码的可读性和可维护性;2. 命名空间:使用命名空间可以避免命名冲突,提高代码的可扩展性;3. PSR规范:遵循PSR-1和PSR-2规范可以提高代码的可读性和可维护性;4. Composer依赖管理:使用Composer可以方便地管理PHP包及其依赖关系;5. 面向对象编程:使用面向对象编程可以提高代码的可复用性和可维护性;6. 错误日志:使用error_log函数可以将错误信息写入到文件或者发送邮件,方便排查问题;7. 调试工具:使用xdebug、Kint等PHP调试工具可以快速定位程序问题。
四、避免常见错误1. XSS攻击:对输入的数据进行过滤和转义,避免恶意脚本的注入;2. SQL注入:使用PDO预处理语句或者转义特殊字符,避免SQL注入攻击;3. 文件包含漏洞:使用绝对路径,并且限制只包含指定的目录下的文件;4. 错误日志泄漏:避免将错误日志输出到浏览器或者屏幕上,避免敏感信息的泄漏;5. 密码加密:使用哈希算法加密用户的密码,避免密码被盗取。
php面向对象程序设计(OOP)的61条准则

(23)尽量减少类和协作者之间传递的消息的数量。
(24)尽量减少类和协作者之间的协作量,也即:减少类和协作者之间传递的不同消息的数量。
(25)尽量减少类的扇出,也即:减少类定义的消息数和发送的消息数的乘积。
(26)如果类包含另一个类的对象,那么包含类应当给被包含的对象发送消息。也即:包含关系总是意味着使用关系。
(27)类中定义的大多数方法都应当在大多数时间里使用大多数数据成员。
(28)类包含的对象数目不应当超过开发者短期记忆的容量。这个数目常常是6。
当类包含多于6个数据成员时,可以把逻辑相关的数据成员划分为一组,然后用一个新的包含类去包含这一组成员。
(29)让系统功能在窄而深的继承体系中垂直分布。
(10)把不相关的信息放在另一个类中(也即:互不沟通的行为)。
朝着稳定的方向进行依赖.
(11)确保你为之建模的抽象概念是类,而不只是对象扮演的角色。
(12)在水平方向上尽可能统一地分布系统功能,也即:按照设计,顶层类应当统一地共享工作。
(13)在你的系统中不要创建全能类/对象。对名字包含Driver、Manager、System、Susystem的类要特别多加小心。
(41)所有的抽象类都应当是基类。
(42)所有的基类都应当是抽象类。
(43)把数据、行为和/或接口的共性尽可能地放到继承层次体系的高端。
(44)如果两个或更多个类共享公共数据(但没有公共行为),那么应当把公共数据放在一个类中,每个共享这个数据的类都包含这个类。
(45)如果两个或更多个类有共同的数据和行为(就是方法),那么这些类的每一个都应当从一个表示了这些数据和方法的公共基类继承。
psr标准

psr标准标题:PSR标准概述及实践指南---**一、引言**PSR是PHP Standards Recommendations的缩写,是由PHP-FIG(PHP Framework Interop Group)制定的一系列PHP编程规范。
这些规范旨在提升PHP项目的可维护性、互操作性和一致性,减少开发者在不同框架和库之间切换时的学习成本,提高团队协作效率。
**二、PSR标准分类**1. **编码规范**:- PSR-1 基础编码规范:定义了PHP代码的基础编码规范,包括类名、文件名、常量命名等。
- PSR-2 编码风格规范:详细规定了PHP代码的格式化规则,如缩进、空格、花括号使用等。
2. **自动加载规范**:- PSR-0 自动加载规范(已废弃):早期定义了如何通过类名或命名空间来定位文件的规范。
- PSR-4 自动加载规范:替代PSR-0,提供了基于命名空间的类自动加载机制。
3. **HTTP消息接口**:- PSR-7 HTTP消息接口:定义了一套统一的HTTP请求和响应对象接口。
4. **HTTP中间件**:- PSR-15 HTTP中间件规范:定义了HTTP中间件接口,方便处理请求和生成响应。
5. **依赖注入容器接口**:- PSR-11 通用容器接口:提供了一个通用的容器接口,用于存储和检索对象实例。
6. **日志接口**:- PSR-3 日志接口:定义了一种通用的日志记录接口以及一套预定义的日志级别。
**三、PSR标准实践**遵循PSR标准,不仅可以使你的项目代码更加整洁、易读,还能使得项目更好地与其他遵循相同规范的第三方库和框架兼容。
例如,在项目中实施PSR-4自动加载规范,可以简化类的加载过程;采用PSR-3日志接口,可以轻松替换不同的日志实现。
对于开发团队而言,应将PSR标准纳入内部编码规范,并在项目初始化阶段就进行严格遵循。
同时,利用自动化工具(如PHP_CodeSniffer, PHP-CS-Fixer 等)对代码进行检查和格式化,能有效保证代码质量并降低人工审查成本。
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 规范的好处是明显的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PHP 编程规范(试行)前言为规范PHP 开发的编码风格,提高开发效率和降低开发人员的时间成本,建立统一的PHP 开发标准体系,依据国际、国内相关标准、法规,参照国际、国内通行的职业技能标准制定本规范。
本规范由大连市经济和信息化委员会提出并归口。
本规范项目召集单位:本规范项目专家组:本规范主要起草单位:本规范起草人:本规范于二○一○年十一月四日首次发布。
目录1. 适用范围 (5)2. 定义和术语 (5)2.1 PHP 语言 (5)2.2 程序代码 (5)3. 代码编写格式 (5)3.1 代码标记 (5)3.2 缩进 (5)3.3 长度 (5)3.4 行宽 (6)3.5 间隔 (6)3.6 对齐 (6)3.7 括号 (6)4. 注释 (7)4.1 预注释 (7)4.2 类、接口注释 (8)4.3 函数方法注释 (8)4.5 其它注释 (9)5. 命名 (9)5.1 文件 (9)5.2 变量 (9)5.3 常量 (10)5.4 类、接口 (10)5.5 方法、函数 (10)6. 声明 (10)6.1 类、接口 (10)6.2 方法 (10)6.3 变量 (11)6.4 常量 (11)6.5 其他 (11)7. 表达式与语句 (12)7.1 控制语句 (12)7.2 循环语句 (12)8. 错误与异常 (13)8.1 已检查异常与运行时异常 (13)8.2 异常错误提示设置 (13)9. 测试与 BUG 跟踪 (13)9.1 测试基本原则 (13)9.2 BUG 跟踪和缺陷处理 (13)10. 性能与安全 (13)10.1 输入与输出 (13)10.2 针对 PHP.INI 的规则 (14)10.3 SQL 语句处理规则 (14)11. 其它 (14)12. 附录 (14)12.1 注释模板 (14)PHP 编程规范1.适用范围本规范规定了PHP 开发当中的代码编写格式、注释及命名规则、错误及异常的处理方法、性能与安全的操作准则。
确立了PHP 开发工作的一般原则。
针对PHP 开发过程当中模糊不清的约定给出了统一明确的约定指南。
本标准适用于从事PHP 开发的相关企业、开发团队、教育和培训服务机构以及相关决策等机构,针对PHP 开发工作进行约定、检验、鉴定以及针对PHP 开发人员的技术培训。
2.定义和术语2.1 PHP 语言PHP 是基于服务端应用和创建动态网页的多用途脚本语言,可嵌入HTML,并支持主流数据库和操作系统。
2.2 程序代码程序代码是一系列计算机系统可以识别的,人类可读的具有特定含义的计算机语言字符集合。
3.代码编写格式3.1 代码标记PHP 程序可以使用<?php ... ?>或<? ... ?>来界定PHP 代码,在HTML 页面中嵌入纯变量时,可以使用<?=$variablename?>这样的形式。
3.2 缩进PHP 程序中缩进宜按标准键盘的1 个“TAB”键,即4 个空格为单位,一段程序中不应出现两种缩进的规则。
3.3 长度a)单个函数的有效代码长度应控制在100 行以内,不包括注释行。
b)单个类的有效代码长度应控制在1500 行以内,不包括注释行。
3.4 行宽每行PHP 代码的行宽宜设置为80 个字符。
3.5 间隔a)操作符两端应各空一个字符。
b)相应独立的功能模块之间应使用注释行间隔,并标明相应内容。
c)程序体上下之间应加入一个空白行,不应使用多空行。
3.6 对齐a)关系密切的代码行应对齐,例如类型、修饰、名称、参数等。
b)连续赋值时应对齐操作符。
c)方法参数过多时应在每个参数的逗号后换行并对齐。
d)控制或循环中的条件大于行宽时,应在操作符前换行,对齐并注释相应条件。
e)变量定义应通过添加空格对齐操作符,同一类型的变量应放在一起。
3.7 括号a)小括号(“( )”)使用过程中,“(”应和函数的关键词紧贴在一起,除此以外宜使用空格将“(”同前面的内容分开;右括号“)”除后面是“)”或者是“.”以外,其它内容应一律用空格隔开;b)大括号(“{ }”)中的语句应单独作为一行,其中:“{”应紧跟语句后;“}”应单独一行与程序体第一个字符对齐,并说明相应匹配的功能模块;c)较长的方法以及类、接口等的"}"后应使用//end ...等标识结束。
例如:类的结束符:}//EOC ClassName,方法结束符:}//end methodName(),功能块结束:}//end erName is null? 循环体结束:}//end for...every user in userList示例:<?Php //代码标记 3.1//缩进 3.2----------------------------------------------- for($i = 0; $i < $length; $i++){if($i>0){$n = $i;}}//变量对齐 3.6-----------------------------------------------$count = 100;$length = 0;$user_name = null;$porduct = array(); //声明数组//参数对齐 3.6---------------------------------------------- getConnection($url,$user_name,$password){...} //getConnection()结束//换行对齐 3.6----------------------------------------------$sql = "SELECT * "." FROM TProduct WHERE Prod_ID = ".$prod_id;//条件对齐---------------------------------------------- if( Condition1 //当条件一&& Condition2 //并且条件二|| Condition3){ //或者条件三...}//操作符两边空格----------------------------------------$result = (($a + 1) * 3 / 2 + $num).'Test';$condition ? func1($var) : func2($var);>4.注释4.1 预注释预注释中,应包括程序名称、程序版本及修订版本号、CVS(版本控制系统)控制字符串、更新时间等信息内容。
在预注释中,宜放入相应的CVS 控制字串,以方便CVS 提交时自动更新。
宜采用多行注释的方式。
预注释示例代码:/*开发组名称和版权声明等$RCSfile:forumdisplay.php,v $$Revision:1.75$$Date:2006/02/23 13:44:02$*/4.2 类、接口注释在类、接口定义之前,应做相应注释,包括类、接口的目的、作用、功能、继承于何种父类,实现的接口、实现的算法、使用方法、示例程序等。
类、接口注释示例代码:/*** 字符串实用类** 定义字符串操作时所需要用到的方法,如转换中文、HTML 标记处理等。
** @author $Author: l_walker$* @version $Revision: 1.2 $ $Date: 2003/05/15 02:10:27 $*/public class StringUtil{…}4.3 函数方法注释a)应明确该方法的功能、作用、各参数含义及返回值等。
b)若在函数方法内注释复杂算法,应用/*...*/。
c)为参数作注释时应注明取值范围和返回值,还应明确相应失败、错误、异常时的返回情况。
函数方法注释示例代码:/*** 执行查询。
* 该方法调用 Statement 的 executeQuery(sql)方法并返回 ResultSet* 结果集。
* @param sql 标准的 SQL 语句* @return ResultSet 结果集,若查询失败则返回 null* @throws SQLException 当查询数据库时可能引发此异常*/function execute_query($sql) {//SQL 语句都不能为空if("" != $sql){//返回查询执行结果return mysql_query($sql);}return null;}//end eexecute_query()4.5 其它注释程序开发中的临时代码和调试代码,应添加注释。
譬如:“//debug”。
其它注释示例代码:$num = 1;$flag = TURE;//debugif(empty($flag)){... //Statements}5.命名5.1 文件文件名应使用小写英文字母和下划线:“_”,文件名不宜出现数字,不应使用纯数字命名。
可用前缀来明确文件的类别及功能,例如:class_db_mysql.php。
5.2 变量变量名中所有字母宜小写。
对于一个变量使用多个单词的,应使用下划线’_’作为每个词的间隔。
例如:$base_dir、$red_rose_price 等。
5.3 常量常量应全部使用大写字母命名,少数特别必要的情况下,可以使用下划线来分隔单词;例如:define("A_GLOBAL_CONSTANT", "Hello world!");PHP 的内建值TRUE、FALSE 和NULL应全部采用大写字母书写。
5.4 类、接口类和接口命名,应以大写字母开头;多个单词组成命名,单词之间不必使用间隔,各个单词首字母宜使用大写。
类和接口中属性的命名方式参考本规范5.2 的变量命名规范。
例如:class MyClass 或class DbOracle 等。
5.5 方法、函数函数名应一律使用小写格式,如有必要,单词之间宜使用下划线“_”进行分割;以标准计算机英文为蓝本,可使用拼音、但拼音应该语义清晰明了,不应使用拼音英文混杂的命名方式;变量命名只能是使用项目中有据可查的英文缩写方式。
譬如:宜使用$data 这样的形式,而不宜使用$data1、$data2 这样容易产生混淆的形式,应使用$theraddata、$postdata 这样容易理解的形式。
6.声明6.1 类、接口类的划分代码块不宜太大,避免造成过于庞大的单个类。
也不宜太细,避免类的继承太深。
根据类的职责,应当一个类只做一件事,每个类应写在单独一个程序文件中。