psr规范发展历程

====================PSR-0(自动加载规范)=======================

PSR-0(Autoloading Standard)类自动加载规范,该规范现已废弃(Deprecated),它将由PSR-4替代。

1.一个完全合格的命名空间和类名必须遵循以下结构 "\VendorName\Namespace\ClassName"

2.每个命名空间必须有顶级的命名空间 "VendorName"

3.每个命名空间可以有任意多个子命名空间

4.每个命名空间在被文件系统加载时必须被转换为操作系统路径分隔符 (DIRECTORY_SEPARATOR)

5.每个"_"字符在"类名"中被转换为DIRECTORY_SEPARATOR。而在 PSR-4 中使用下划线没有任何特殊含义

6.符合命名标准的命名空间和类名必须以".php"结尾来加载文件

7.命名空间和类名可以由大小写字母组成,但必须对大小写敏感以保证多系统兼容性

====================PSR-1(基本代码规范)=======================

PSR-1(Basic Coding Standard)基本代码规范,用以确保共享的PHP代码间具有较高程度的技术互通性。

1.PHP代码源文件必须以 <?php 或 <?= 标签开始

2.PHP代码源文件必须使用不带 BOM 的 UTF-8 编码

3.一个源文件建议只用作定义类、函数、常量等声明,或者其他产生从属效应的操作(如:输出信息,修改配置文件等)

4.命名空间以及类必须符合 PSR 的自动加载规范:PSR-0 或 PSR-4

5.类的命名必须遵循 StudlyCaps 大写开头的驼峰式命名规范

6.类中的常量所有字母都必须大写,单词间用下划线分隔

7.方法名必须符合 camelCase 式的小写开头驼峰式命名规范

* BOM(byte order mark)是 Unicode 标准的一部分,通常用于标记纯文本字节序(byte order),使得文本处理程序能够识别读入的文件使用的 Unicode 编码(UTF-8、UTF-16、UTF-32)。

* 从属效应是指仅仅通过包含文件,不直接声明类、函数和常量而执行的逻辑操作。一份PHP源文件应该要么就只包含不产生从属效应的定义操作,要么就包含只会产生从属效应的逻辑操作,切勿同时包含两者。

====================PSR-2(代码风格规范)=======================

PSR-2(Coding Style Guide)代码风格规范,通过制定一系列规范化PHP代码的规则,以减少因代作者码风格不同而造成的阅读不便。

1.代码必须遵循 PSR-1 中的编码规范

2.代码必须使用4个空格来进行缩进,而非制表符(TAB)

3.建议每行代码字符数保持在80个以内,理论上不可多于120个,但不做硬性限制

4.每个 namespace 命名空间语句和 use 声明语句块后面必须插入一个空白行

5.类的左花括号 "{" 必须写在声明后自成一行,右花括号 "}" 也必须在类主体下自成一行

6.方法的左花括号 "{" 必须放在声明后自成一行,右花括号 "}" 也必须于主体下自成一行

7.类的属性和方法必须添加访问修饰符(private、protected、public),abstract 以及 final 必须声明在访问修饰符之前,而 static 必须声明在访问修饰符之后(例:final public static)

8.在控制结构关键字的后面必须有一个空格,而调用方法或函数时一定不能有(控制结构:if-else、switch-case、try-catch、while、foreach ...)

9.控制结构的左花括号 "{" 必须跟其处于同一行,右花括号 "}" 必须在控制结构主体之后自成一行

10.控制结构的开始左括号之后,和结束右括号之前都不可以有空格

====================PSR-3(日志接口规范)=======================

PSR-3(Logger Interface)日志接口规范,主要目的是为了让日志类库通过接收一个 LoggerInterface 对象来记录日志信息。

1.LoggerInterface 接口对外定义了八个方法,分别用来记录 RFC 5424 中定义的八个等级的日志:debug、info、notice、warning、error、critical、alert、emergency

2.第九个方法 log(),第一个参数为记录等级。可使用一个预先定义的等级常量作为参数来调用此方法,必须与直接调用以上八个方法具有相同的效果。如果传入的等级常量没有预先定义,则必须抛出 psr\Log\InvalidArgumentException 类型的异常。不推荐使用自定义的日志等级,除非你非常确定当前类库对其有所支持。

====================PSR-4(自动加载新规)=======================

PSR-4(Improved Autoloading)本规范是关于自动载入对应类的相关规范,是 PSR-0 自动加载规范的补充。

1.此处的“类”是一个泛称,它包含类、接口、traits 以及其他类似的结构

2.完全限定类名需要遵循以下结构:\<命名空间>(\<子命名空间>)*\<类名>

  * 完全限定类名必须要有一个顶级命名空间,被称为 "vendor namespace";

  * 完全限定类名可以有一个或多个子命名空间;

  * 完全限定类名必须有一个终止类名;

  * 完全限定类名中任意一部分中的下划线都没有特殊含义;

  * 完全限定类名可以由任意大小写字母组成;

  * 完全限定类名必须以大小写敏感的方式引用;

3.当根据完整的类名载入相应的文件时:

  * 完全限定类名中,连续的一个或几个子命名空间构成的命名空间前缀(不包括顶级命名空间的分隔符),至少对应着至少一个基础目录;

  * 紧接命名空间前缀后的子命名空间必须与相应的”文件基目录“相匹配,其中的命名空间分隔符将作为目录分隔符;

  * 终止类名对应一个以 .php 结尾的文件,文件名必须和终止类名大小写匹配;

4.自动加载器(autoloader)的实现不能抛出异常,不可引发任一级别错误,也不应该有返回值

原文地址:https://www.cnblogs.com/akidongzi/p/9757924.html

时间: 2024-11-10 16:04:32

psr规范发展历程的相关文章

Java的发展历程

Java的发展历程充满了传奇色彩. 最初,Java是由Sun公司的一个研究小组开发出来的, 该小组起先的目标是想用软件实现对家用电器进行集成控制的小型控制装置. 开始,准备采用C++,但C++太复杂,而且安全性差,最后基于C++开发了一种新的语言Oak, 据说当时是小组成员之一Gosling在苦思冥想这种语言的名字时,正好看到了窗外的一颗橡树, Oak在英文里是"橡树"的意思,所以给该语言命名为Oak. 它是一种用于网络的精巧而安全的语言,但是这个在技术上非常成功的产品在商业上却几近失

大宗商品交易平台的发展历程

经过二十几年的发展,我国大宗商品电子交易与传统产业的融合创新步伐正在加速,一套现代化的商品市场体系已经逐渐形成.回看大宗商品交易平台的发展历程,可以发现,这一市场形态在不断发扬其立足现货.服务现货.提升现货的功能优势.90年代末,国家经贸委(现商务部)等八部委联合推出了大宗商品交易市场,对相关商品进行即期现货或中远期现货交易,目的是借助电子商务平台创新现货交易方式,以优化资源配置.随着互联网普及和地×××府推动,人才.资本等要素的涌入,大众商品交易平台从创始之初就呈现出破竹之势.为了规范大宗商品

豆瓣网技术架构的 发展历程(一)

豆瓣简介: •2005年3月上线 •以分享和发现为核心的社区 •读书.电影.音乐.小组.同城.九点 •我的豆瓣.友邻  一些数据: •2.8M注册用户,约1/4活跃用户•千万级非注册用户•20M动态请求/天,峰值500~600/sec•23台普通PC服务器(1U*15/2U*8) •12台提供线上服务•38G memcached 单服务器: • 单台1U服务器 (frodo)• 单核AMD Athlon 64 1.8GHz• 1G内存,160G SATA*2• Gentoo Linux• MyS

【Kinect开发笔记之(二)】Kinect for windows发展历程

新版本SDK和旧版本的SDK完全兼容,如果您之前安装过旧版本的,可以直接安装新版本的SDK,但是如果您之前的开发版本是Beta版的,则需要卸载之后再安装新版本.在Kinect for Windows SDK 1.0版本中,SDK和示例文件是打包一起安装的.而在之后的版本,为了可以分别升级,微软把这两者分开独立为Kinect for Windows SDK和Kinect for Windows Developer Toolkit这两部分,所以需要分别下载安装, Kinect for Windows

大数据发展历程

一:大数据概念 大数据是由数量巨大.结构复杂.类型众多的数据结构的数据集合,在合理时间内,通过对该该数据集合的管理.处理.并整理成为能帮助政府机构和企业进行管理.决策的讯息. 二:大数据特点 大数据通常具有以下几种特点: 1.大量:即数据体量庞大,包括采集.存储和计算的量都非常大. 2.高速:要求处理速度快,从各类型的数据中快速获得高价值的信息 3.多样:数据种类繁多 4.价值:价值密度低,由于数据产生量巨大且速度非常快,必然形成各种有效数据和无效数据错杂的状态,因此数据价值的密度低. 5.在线

1.编程语言发展历程介绍

1.编程语言的发展历程. 最开始的编程语言代码是010101等形式的编程->机器码->汇编语言->C语言(需要自己管理内存:现有内库和工具不多)->Java/C#/PHP/Python等高级语言(不需要自己管理内存,每一种语言都有自己专门的虚拟机或者叫解释器处理类似这些事情:现存内库和工具相对齐全). 2.Python的种类 Cpython/PYPY(特殊)/JavaPyhong/IronPython/Rubypython 我们常说的python就是Cpython; 针对Cpyth

3D显示技术发展历程与现状

前言: <阿凡达>上映后,3D显示就一发不可收拾.人们惊叹于这项技术通过电影带给人们的视觉冲击力,立体的画面让观众仿佛身临其境,更加接近真实世界的感受.为了让3D显示技术走进大众的视野,广播电视总局发文一系列有关推进3D显示文件,其中北京电视台.央视等多个频道已着手3D制作,有望明年上线. 阿凡达效应仍在持续,无数影迷已如痴如醉,甚至一度出现,无3D不观影之势.如是,3D便如忽如一夜春风来,千树万树梨花开;然而,这时众多伪3D也趁机而入,真正3D却为之甚少.近期,随着国产首部IMAX+3D电影

一 GPU 编程技术的发展历程及现状

前言 本文通过介绍 GPU 编程技术的发展历程,让大家初步地了解 GPU 编程,走进 GPU 编程的世界. 冯诺依曼计算机架构的瓶颈 曾经,几乎所有的处理器都是以冯诺依曼计算机架构为基础工作的. 该系统架构简单来说就是处理器从存储器中不断取指,解码,执行. 但如今,这种系统架构遇到了瓶颈:内存的读写速度已经跟不上 CPU 的时钟频率了.具有此特征的系统被称为内存受限型系统,目前的绝大多数计算机系统都属于此类型. 为了解决这个问题,传统的解决方案是使用缓存技术.通过给 CPU 设立多级缓存,能够大

Android的发展历程及搭建

Android的发展历程: 对于Android我比较不熟悉,因为我的第一只手机就是iphone,我没用过Android系统,但在中国使用带有Android系统的手机的人数是最多的,所以我想学习Android系统的软件开发,接下来我就简单介绍一下Android的发展历程. Android系统的开发使用的是Java语言.Android系统主要由Google和开放手机联盟领导和开发.Android公司在2003年创建,后由Google收购.经过几年的开发,2008年Android系统最早的版本终于面世