当前位置: 首页 > 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的详细说明、状态(是否活跃或已废弃)以及如何遵循这些标准的具体指导。

相关文章:

PHP 标准建议psr

PSR-1: Basic Coding Standard&#xff08;基础编码标准&#xff09; PSR-1 定义了PHP代码文件的基本编写规范&#xff0c;它关注的是代码文件的结构和一些通用的编程约定&#xff0c;主要包括&#xff1a; 文件命名&#xff1a;PHP文件必须以.php为后缀。PHP标签&#xff1a…...

第九届信也科技杯全球AI算法大赛——语音深度鉴伪识别参赛A榜 0.968961分

遗憾没有进复赛&#xff0c;只是第41名。先贴个A榜的成绩。A榜的前三十名晋级&#xff0c;个个都是99分的大佬&#xff0c;但是B榜的成绩就有点低了&#xff0c;应该是数据不同源的问题&#xff0c;第一名0.78分。官网链接&#xff1a;语音深度鉴伪识别 官方baselin:https://g…...

【设计模式(三) 设计模式的分类 】

设计模式&#xff08;DesignPattern&#xff09;是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 使用设计模式的目的 &#xff1a;为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编写真正工程化&#xff1b;设计模式是软件工程…...

Linux进程概念(个人笔记)

Linux进程概念 1.冯诺依曼体系结构2.操作系统&#xff08;先描述&#xff0c;再组织&#xff09;3.进程3.1查看进程的方式3.2通过系统调用获取进程标识符3.4查看进程中常见字段状态的指令3.3fork创建子进程3.3.1fork的原理 3.4进程状态3.5进程优先级3.5.1Linux内核的调度队列与…...

每天五分钟计算机视觉:如何在现有经典的卷积神经网络上进行微调

本文重点 在深度学习领域,卷积神经网络(Convolutional Neural Networks,CNN)因其强大的特征提取和分类能力而广泛应用于图像识别、自然语言处理等多个领域。然而,从头开始训练一个CNN模型往往需要大量的数据和计算资源,且训练时间较长。幸运的是,迁移学习(Transfer Le…...

10个典型的MySQL笔试题和面试题

提供10个典型的MySQL笔试题和面试题作为示例&#xff0c;并给出答案或解释。如果需要更多题目&#xff0c;可以根据这些示例进行扩展或参考相关文档。 1. MySQL是什么&#xff1f; 答案&#xff1a;MySQL是一个关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c…...

AI大模型的TTS评测

L-MTL&#xff08;Large Multi-Task Learning&#xff09;Models 是一种大规模多任务学习模型&#xff0c;通过结合 Mixture of Experts&#xff08;MMoE&#xff09;框架与 Transformer 模型&#xff0c;实现对 TTS&#xff08;Text-to-Speech&#xff09;系统中多个评估指标的…...

推荐一款可以下载B站视频和音频的工具

cobalt是一个免费的下载网站&#xff0c;主要是用于载视频和音频。只要你把相应的网址复制下来&#xff0c;然后打开cobalt网站&#xff0c;黏贴网址&#xff0c;选择要下载的格式&#xff0c;就可以下载相应的音频或者视频了。 该网站非常简洁&#xff0c;使用也很简单。目前只…...

中科数安 |-透明加密软件_无感透明加密 - 源头有保障

中科数安的透明加密软件是一款专为保护企业数据安全而设计的高级产品&#xff0c;它采用了无感透明加密技术&#xff0c;确保源头数据的安全可靠。 ——www.weaem.com 以下是该软件的主要特点和功能概述&#xff1a; 无感透明加密&#xff1a; 中科数安的透明加密软件能够在用…...

ui自动化selenium,清新脱俗代码,框架升级讲解

一&#xff1a;简化 1. 新建common 包 新建diver.py 封装浏览器驱动类 from selenium import webdriverclass Driver():"""浏览器驱动类定义 一个【获取浏览器驱动对象driver的方法】。支持多种类型浏览器"""def get_driver(self,browser_typ…...

【吊打面试官系列-Mysql面试题】Myql 中的事务回滚机制概述 ?

大家好&#xff0c;我是锋哥。今天分享关于 【Myql 中的事务回滚机制概述 ?】面试题&#xff0c;希望对大家有帮助&#xff1b; Myql 中的事务回滚机制概述 ? 事务是用户定义的一个数据库操作序列&#xff0c;这些操作要么全做要么全不做&#xff0c;是一个不可分割的工作单位…...

VMware虚拟机三种网络模式设置 - Bridged(桥接模式)

一、前言 由于linux目前很热门&#xff0c;越来越多的人在学习linux&#xff0c;但是买一台服务放家里来学习&#xff0c;实在是很浪费。那么如何解决这个问题&#xff1f;虚拟机软件是很好的选择&#xff0c;常用的虚拟机软件有vmware workstations和virtual box等。 在使用虚…...

关于Panabit在资产平台中类型划分问题

现场同事问了一个问题&#xff1a;Panabit能不能当做CentOS接入&#xff1f; 我第一反应是&#xff1a;Panabit是个什么鬼&#xff1f;为啥要混编接入&#xff1f;后期维护都是事啊。所以&#xff0c;我就想回答&#xff1a;不能&#xff01; 但是&#xff0c;最好要给出一个…...

【C语言】12.C语言内存函数

文章目录 1.memcpy使用和模拟实现2.memmove使用和模拟实现3.memset函数的使用4.memcmp函数的使用 memcpy&#xff1a;内存拷贝 memmove&#xff1a;内存移动 memset&#xff1a;内存设置 memcmp&#xff1a;内存比较 1.memcpy使用和模拟实现 memcpy&#xff1a;内存拷贝 void…...

Django:如何将多个数据表内容合在一起返回响应

一.概要 Django写后端返回响应时&#xff0c;通常需要返回的可能不是一个数据表的内容&#xff0c;还包括了这个数据表的外键所关联的其他表的一些字段&#xff0c;那该如何做才能把他们放在一起返回响应呢&#xff1f; 二.处理方法 在这里我有三个数据表 第一个是航空订单&…...

棱镜七彩荣获CNNVD两项大奖,专业能力与贡献再获认可!

6月18日&#xff0c;国家信息安全漏洞库&#xff08;CNNVD&#xff09;2023年度工作总结暨优秀表彰大会在中国信息安全测评中心成功举办。棱镜七彩凭借在漏洞方面的突出贡献和出色表现&#xff0c;被授予“2023年度优秀技术支撑单位”与“2023年度最佳新秀奖”。 优秀技术支撑单…...

uni-app中使用富文本rich-text个人经验

rich-text是在uni-app一个内置组件&#xff0c;用于高性能地渲染富文本内容。先贴一下官方的属性列表&#xff1a; 先说一下“selectable” 长按选择区域复制&#xff0c;这个我在APP项目中 不起作用&#xff0c;可能像文档说的&#xff0c;只支持“百度小程序”吧。在APP端起作…...

Matlab|基于V图的配电网电动汽车充电站选址定容-可视化

1主要内容 基于粒子群算法的电动汽车充电站和光伏最优选址和定容 关键词&#xff1a;选址定容 电动汽车 充电站位置 仿真平台&#xff1a;MATLAB 主要内容&#xff1a;代码主要做的是一个电动汽车充电站和分布式光伏的选址定容问题&#xff0c;提出了能够计及地理因素和服…...

从零开始! Jupyter Notebook的安装教程

&#x1f680; 从零开始! Jupyter Notebook的安装教程 摘要 &#x1f4c4; Jupyter Notebook 是一个广受欢迎的开源工具&#xff0c;特别适合数据科学和机器学习的开发者使用。本文将详细介绍从零开始安装 Jupyter Notebook 的步骤&#xff0c;包括各种操作系统的安装方法&am…...

web前端信息卡:深入探索与实用指南

web前端信息卡&#xff1a;深入探索与实用指南 在数字化时代&#xff0c;web前端信息卡已成为我们日常生活和工作中的重要组成部分。这些小巧而强大的工具&#xff0c;能够在有限的空间内展示丰富的信息&#xff0c;提升用户体验。然而&#xff0c;设计一个出色的web前端信息卡…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...