php开发规范-psr系列规范

转自:http://www.cnblogs.com/x3d/p/php-psr-standards.html

PSR

是PHP Standard Recommendation的简写,它其实应该叫PSRs,即系列推荐标准:目前通过的规范有PSR-0(Autoloading Standard)、PSR-1(Basic Coding Standard)、PSR-2(Coding Style Guide)、PSR-3(Logger Interface)、PSR-4(Improved Autoloading)。它不是PHP官方标准,而是从如Zend、Symfony2等知名PHP项目中提炼出来的一系列标准,目前有越来有多的社区项目加入成员并遵循该标准。

PHP-FIG — PHP Framework Interoperability Group, 是制定PSRs开发规范的组织,它的成员由很多知名PHP社区项目组成,在其官网首页下方可以看到成员清单。这些成员制定规范,并且落实在自己的项目中。

其实各个PSR规范的内容都很简洁明了,比起那些动则几十页的规范,真是好太多了。

PSR-0(Autoloading Standard)

PSR-0即类自动加载规范(原文:官网GitHub)。从2014-10-21日起,该规范被标记为Deprecated,由PSR-4替代。它的内容十分简洁。

内容:

  1. 一个完全合格的命名空间和类名必须有以下的结构“\<Vendor Name>\(<Namespace>\)*<Class Name>”
  2. 每个命名空间必须有顶级的命名空间(“Vendor Name”)
  3. 每个命名空间可以有任意多个子命名空间
  4. 每个命名空间在被从文件系统加载时必须被转换为“操作系统路径分隔符”(DIRECTORY_SEPARATOR )
  5. 每个“_”字符在“类名”中被转换为DIRECTORY_SEPARATOR 。“_”符号在命名空间中没有明确含义
  6. 符合命名标准的命名空间和类名必须以“.php”结尾来加载文件
  7. Vendor Name,命名空间,类名可以由大小写字母组成,其中命名空间和类名是大小写敏感的以保证多系统兼容性

PSR-1(Basic Coding Standard)

PSR-1即基础编码标准(原文:官网GitHub)。内荣也十分简洁,包含了类文件、类名、类方法名的命名方法。

内容:

  1. 源文件必须只使用 <?php 和 <?= 这两种标签
  2. 源文件中php代码的编码格式必须只使用不带BOM的UTF-8
  3. 一个源文件建议只用来做声明(类,函数,常量等)或者只用来做一些引起副作用的操作(例如:输出信息,修改.ini配置文件等),但不应该同时做这两件事
  4. 命名空间和类必须遵守PSR-0标准
  5. 类名必须使用StudlyCaps写法
  6. 类中的常量必须只由大写字母和下划线(_)组成
  7. 方法名必须使用cameCase写法

PSR-2(Coding Style Guide)

PSR-2即编码风格标准(原文:官网GitHub)。内容就稍多,但还是比较简洁,它以PSR-1为基础,包含了缩进、每行代码长度、换行、方法可见性声明、空格和方法体大括号换行的相关规定。

标准内容:

  1. 代码必须遵守 PSR-1
  2. 代码必须使用4个空格来进行缩进,而不是用制表符
  3. 一行代码的长度不应有硬限制;软限制必须为120个字符,建议每行代码80个字符或者更少
  4. 在命名空间的声明下面必须有一行空行,并且在use的声明下面也必须有一行空行
  5. 类的左花括号必须放到其声明下面自成一行,右花括号则必须放到类主体下面自成一行
  6. 方法的左花括号必须放到其声明下面自成一行,右花括号则必须放到方法主体的下一行
  7. 所有的属性和方法必须有可见性声明;abstract和final声明必须在可见性声明之前;而static声明必须在可见性声明之后
  8. 在结构控制关键字的后面必须有一个空格;而方法和函数调用时后面不可有空格
  9. 结构控制的左花括号必须跟其放在同一行,右花括号必须放在该结构控制代码主体的下一行
  10. 控制结构的左括号之后不可有空格,右括号之前也不可有空格

PSR-3(Logger Interface)

PSR-3是对应用日志类的通过接口的定义(原文:官网GitHub)。内容很简单,就是一个接口,官方示例代码引用一下就好了。当然,在具体的应用中,只要遵循该接口,肯定可以定制相应的实现。

基础内容:

  1. LoggerInterface暴露八个接口用来记录八个等级(debug, info, notice, warning, error, critical, alert, emergency)的日志。
  2. 第 九个方法是log,接受日志等级作为第一个参数。用一个日志等级常量来调用这个方法必须和直接调用指定等级方法的结果一致。用一个本规范中未定义且不为具 体实现所知的日志等级来调用该方法必须抛出一个Psr\Log\InvalidArgumentException。不推荐使用自定义的日志等级,除非你 非常确定当前类库对其有所支持。

PSR-4(Improved Autoloading)

PSR-4即改进版的自动加载规范(原文:官网GitHub)。它是PSR-0规范的接替者。它可以与任何其它的自动加载规范兼容,包括PSR-0。

内容:

  1. 术语「类」是一个泛称;它包含类,接口,traits 以及其他类似的结构;
  2. 完全限定类名应该类似如下范例:<NamespaceName>(<SubNamespaceNames>)*<ClassName>
    1. 完全合规类名必须有一个顶级命名空间(Vendor Name)
    2. 完全合规类名可以有多个子命名空间
    3. 完全合规类名应该有一个终止类名
    4. 下划线在完全合规类名中是没有特殊含义的
    5. 字母在完全合规类名中可以是任何大小写的组合
    6. 所有类名必须以大小写敏感的方式引用
  3. 当从完全合规类名载入文件时:
    1. 在完全合规类名中,连续的一个或几个子命名空间构成的命名空间前缀(不包括顶级命名空间的分隔符),至少对应着至少一个基础目录
    2. 在「命名空间前缀」后的连续子命名空间名称对应一个「基础目录」下的子目录,其中的命名 空间分隔符表示目录分隔符。子目录名称必须和子命名空间名大小写匹配
    3. 终止类名对应一个以 .php 结尾的文件。文件名必须和终止类名大小写匹配
  4. 自动载入器的实现不可抛出任何异常,不可引发任何等级的错误;也不应返回值
时间: 2024-10-09 01:35:58

php开发规范-psr系列规范的相关文章

PHP的PSR系列规范都有啥内容

PSR 是PHP Standard Recommendation的简写,它其实应该叫PSRs,即系列推荐标准:目前通过的规范有PSR-0(Autoloading Standard).PSR-1(Basic Coding Standard).PSR-2(Coding Style Guide).PSR-3(Logger Interface).PSR-4(Improved Autoloading).它不是PHP官方标准,而是从如Zend.Symfony2等知名PHP项目中提炼出来的一系列标准,目前有越

Android开发命名规范和编码规范

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51346027 无规矩不成方圆,是吧..哈哈~~ 很庆幸,本人刚学java编程的时候,就被老师灌输了编程规范的相关知识,并且一直在遵守. 有过团队开发经验的人都知道,如果没有一定的规范可行,那么代码看起来将是苦不堪言,甚至是乱七八糟. 下面就介绍一下,我个人编码过程中使用到的规范,供大家参考~~ 命名规范 命名规范要望文知义,简单明了. 命名规范定制太多,就会让人心烦,反而没人遵守了.

iOS开发- Xcode插件(一)-规范注释生成器VVDocumenter

分享几个常用的Xcode插件. 第一个, 规范注释生成器VVDocumenter. 顾名思义, 它可以很方便的为你自动添加注释 使用效果如下: 下载链接:https://github.com/onevcat/VVDocumenter-Xcode 使用说明: 1.前往GitHub下载工程文件:VVDocumenter-Xcode 2.用Xcode打开工程,Command + B Build成功后,可以在~/Library/Application Support/Developer/Shared/X

psr的规范

基本代码规范 本篇规范制定了代码基本元素的相关标准, 以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 "必须"("MUST")."一定不可/一定不能"("MUST NOT")."需要"("REQUIRED"). "将会"("SHALL")."不会"("SHALL NOT")."应该&qu

PHP PSR基本代码规范(中文版)

PSR-1 基本代码规范 本篇规范制定了代码基本元素的相关标准,以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 "必须"("MUST")."一定不可/一定不能"("MUST NOT")."需要"("REQUIRED")."将会"("SHALL")."不会"("SHALL NOT")."应

开发流程与版本管理规范

# 开发流程与版本管理规范 ## 版本号规则 如非特殊说明,所有产品的版本号将遵循 主版本.次版本.BuildNumber 的规则. - 主版本号:发布重大更新时增加 - 次版本号:发布新功能点时增加 - build number: 打包的编号, 日常更新,bug 修复, 功能优化 例如 2.1.34, 2 是 主版本号, 1为次版本号, 34 是 build number. 主版本号变化时次版本号清零,但是 build number 不清零,一直累加.2.1.34 的下个版本号是 3.0.35

PHP PSR标准规范

PHP PSR标准规范,PHP开发者都需要遵循规范. 官网(英文版本): https://www.php-fig.org 官网(中文版本): https://psr.phphub.org 原文地址:https://www.cnblogs.com/cxx8181602/p/9756121.html

SSM框架开发web项目系列(二) MyBatis真正的力量

前言 上篇SSM框架环境搭建篇,演示了我们进行web开发必不可少的一些配置和准备工作,如果这方面还有疑问的地方,可以先参考上一篇“SSM框架开发web项目系列(一) 环境搭建篇”.本文主要介绍MyBatis的基础内容,包括基本概念.开发步骤.使用实例等.说起MyBatis,工作中做过SSH/SSM相关Web开发的或者正在学习MyBatis的人或多或少都会接触到类似“MyBatis和Hibernate有什么区别?”,“MyBatis和Hibernate哪个更好?”,“为什么Mybatis用的人越来

代码书写规范和命名规范

上一篇给大家分享了一下,关于文档编写的几个概念.这篇文章阐述如果编写代码书写规范以及命名规范文档.[以java语言为例] 1.代码书写规范 代码书写规范,能够让不同的人,写出相同风格的代码.很多人都看过java源代码,你会发现java源代码的整体风格几乎是一致的,但是你要知道编写源代码的人是很多的,如何才能让他们写出同一风格的代码呢?这就是代码书写规范的作用. 代码书写规范描述的是如何从头到尾书写代码(自己定义的).通俗点讲就是如何书写java文件.就像你写毕业论文一样,从头到尾每个细节都是有要