0

0

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

php中文网

php中文网

发布时间:2016-08-08 09:30:37

|

809人浏览过

|

来源于php中文网

原创

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)

立即学习PHP免费学习笔记(深入)”;

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. 源文件必须只使用 

  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. 类的左花括号必须放到其声明下面自成一行,右花括号则必须放到类主体下面自成一行

    NewsBang
    NewsBang

    盛大旗下AI团队推出的智能新闻阅读App

    下载
  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. 完全限定类名应该类似如下范例:()*
    1. 完全限定类名必须有一个顶级命名空间(Vendor Name)

    2. 完全限定类名可以有多个子命名空间

    3. 完全限定类名应该有一个终止类名

    4. 下划线在完全限定类名中是没有特殊含义的

    5. 字母在完全限定类名中可以是任何大小写的组合

    6. 所有类名必须以大小写敏感的方式引用

  3. 当从完全限定类名载入文件时:
    1. 在完全限定类名中,连续的一个或几个子命名空间构成的命名空间前缀(不包括顶级命名空间的分隔符),至少对应着至少一个基础目录

    2. 在「命名空间前缀」后的连续子命名空间名称对应一个「基础目录」下的子目录,其中的命名 空间分隔符表示目录分隔符。子目录名称必须和子命名空间名大小写匹配

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

  4. 自动载入器的实现不可抛出任何异常,不可引发任何等级的错误;也不应返回值

注:具体规范内容参考了其他中文翻译版本整理。

以上就介绍了PHP的psr系列规范都有啥内容,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

616

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

194

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

91

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

20

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

54

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

598

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

56

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel 5.8 中文文档手册
Laravel 5.8 中文文档手册

共74课时 | 94万人学习

第三期培训_PHP开发
第三期培训_PHP开发

共116课时 | 26.7万人学习

ThinkPHP6.0直播课
ThinkPHP6.0直播课

共2课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号