当前位置: 首页 > news >正文

PHP 标准建议psr

PSR-1: Basic Coding Standard(基础编码标准)

PSR-1 定义了PHP代码文件的基本编写规范,它关注的是代码文件的结构和一些通用的编程约定,主要包括:

  • 文件命名:PHP文件必须以.php为后缀。
  • PHP标签:所有PHP代码文件必须以<?php开头,不鼓励使用短标签 <?
  • 命名空间和类名:每个文件应只包含一个顶级命名空间声明,并且类的命名必须与文件名(不包括.php后缀)相匹配。
  • 类的声明:类的开放和关闭标签必须各自独占一行。
  • 代码行结束:文件必须以一个空白行结束。
  • 注释:文档块注释(如类和方法的注释)必须遵循PHPDoc标准。

PSR-2: Coding Style Guide(编码风格指南)

PSR-2 则更加详细,它建立在PSR-1的基础之上,提供了一套详细的代码格式化和布局规则,目的是提高代码的可读性和一致性。PSR-2涵盖的规范包括但不限于:

  • 缩进:必须使用4个空格进行缩进,禁止使用制表符。
  • 控制结构:如if、for、foreach、switch等语句的关键字后必须有空格,而其后的大括号必须另起一行,且与其对应的语句在同一列开始。
  • 函数和方法的调用:函数和方法的调用时,其后的开括号必须与函数名在同一行,而闭括号必须在参数列表结束后的新行。
  • 控制结构的括号:即使只有一个控制表达式,也必须使用括号包围。
  • 属性和方法的声明:类的属性和方法之间需要有空行分隔,方法的参数列表中的逗号后面应加空格。

PSR-3: Logger Interface(日志接口)

PSR-3 定义了一个通用的日志记录接口(Logger Interface),它提供了一套标准化的方法来记录不同级别的日志信息(例如DEBUG、INFO、WARNING、ERROR、CRITICAL、ALERT、EMERGENCY)。这个接口的目的是为了让开发者能够在不同的日志处理组件之间轻松切换,而不必修改日志记录的代码逻辑。通过实现这一接口,日志库可以确保兼容性,使得应用程序能够更容易地整合不同的日志处理解决方案。

PSR-4: Autoloading Standard(自动加载标准)

PSR-4 是关于类的自动加载机制的规范,它是对早先PSR-0的改进。PSR-4主要关注如何根据类的命名空间和类名来定位类文件的实际路径。这个标准建议类文件的位置应该与其命名空间和类名的结构相对应,从而使得自动加载器可以根据类名直接推断出文件的路径,而无需维护复杂的类映射表。具体来说:

  • 命名空间的命名应与目录结构相匹配。
  • 类文件的命名必须是其类名加上.php后缀。
  • 自动加载器只需查找与命名空间前缀对应的目录,然后在该目录下寻找与类名匹配的文件。

遵循PSR-4可以极大地简化大型项目中类文件的管理和自动加载过程,提高开发效率并减少错误。

其他psr

PSR-0(已废弃,被PSR-4替代)

  • 标题:Autoloading Standard(自动加载标准)
  • 状态:废弃,由PSR-4取代。
  • 内容:曾定义了基于命名空间和类名的类文件自动加载规则,但已被更灵活的PSR-4所替代。

PSR-6:Caching Interface(缓存接口)

  • 内容:定义了一套缓存接口,使得开发者可以创建和使用遵循统一接口的缓存存储和缓存项。

PSR-7:HTTP Message Interface(HTTP消息接口)

  • 内容:为HTTP请求和响应消息定义了一套接口,促进了HTTP中间件和库之间的互操作性。

PSR-11:Container Interface(容器接口)

  • 内容:定义了一个服务容器(Dependency Injection Container,依赖注入容器)的通用接口。

PSR-12:Extended Coding Style(扩展编码风格)

  • 内容:在PSR-2的基础上进行了细化和扩展,提供了更严格的代码样式规则。

PSR-15:HTTP Server Request Handlers(HTTP服务器请求处理器)

  • 内容:定义了HTTP请求处理器的接口,使得中间件和应用能够以标准化的方式处理HTTP请求。

PSR-16:Simple Cache(简单缓存)

  • 内容:提供了一个简单的缓存接口,适用于轻量级缓存需求,比PSR-6更基础。

所有正式的PSR文档都可以在PHP FIG的官方网站上找到:https://www.php-fig.org/psr/。

这里提供了每份PSR的详细说明、状态(是否活跃或已废弃)以及如何遵循这些标准的具体指导。

http://www.lryc.cn/news/376982.html

相关文章:

  • 第九届信也科技杯全球AI算法大赛——语音深度鉴伪识别参赛A榜 0.968961分
  • 【设计模式(三) 设计模式的分类 】
  • Linux进程概念(个人笔记)
  • 每天五分钟计算机视觉:如何在现有经典的卷积神经网络上进行微调
  • 10个典型的MySQL笔试题和面试题
  • AI大模型的TTS评测
  • 推荐一款可以下载B站视频和音频的工具
  • 中科数安 |-透明加密软件_无感透明加密 - 源头有保障
  • ui自动化selenium,清新脱俗代码,框架升级讲解
  • 【吊打面试官系列-Mysql面试题】Myql 中的事务回滚机制概述 ?
  • VMware虚拟机三种网络模式设置 - Bridged(桥接模式)
  • 关于Panabit在资产平台中类型划分问题
  • 【C语言】12.C语言内存函数
  • Django:如何将多个数据表内容合在一起返回响应
  • 棱镜七彩荣获CNNVD两项大奖,专业能力与贡献再获认可!
  • uni-app中使用富文本rich-text个人经验
  • Matlab|基于V图的配电网电动汽车充电站选址定容-可视化
  • 从零开始! Jupyter Notebook的安装教程
  • web前端信息卡:深入探索与实用指南
  • 之所以选择天津工业大学,因为它是双一流、报考难度适宜,性价比高!天津工业大学计算机考研考情分析!
  • WPF三方UI库全局应用MessageBox样式(.NET6版本)
  • ABAP-03基础数据类型
  • Zabbix监控神通数据库教程
  • 5.音视频基础 FLV
  • Ubuntu server 24 (Linux) 安装客户端(windows/linux) Zabbix 7.0 LTS Zabbix agent2
  • 在 Ubuntu 上取消登录密码和锁屏功能的简易指南
  • PAT B1046. 划拳
  • 奥特曼谈AI的机遇、挑战与人类自我反思:中国将拥有独特的大语言模型
  • Java版-剑指offer数据结构与算法 视频教程 下载
  • mac禁用电池睡眠-mac盒盖连接显示器