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(基础编码标准) PSR-1 定义了PHP代码文件的基本编写规范,它关注的是代码文件的结构和一些通用的编程约定,主要包括: 文件命名:PHP文件必须以.php为后缀。PHP标签:…...
第九届信也科技杯全球AI算法大赛——语音深度鉴伪识别参赛A榜 0.968961分
遗憾没有进复赛,只是第41名。先贴个A榜的成绩。A榜的前三十名晋级,个个都是99分的大佬,但是B榜的成绩就有点低了,应该是数据不同源的问题,第一名0.78分。官网链接:语音深度鉴伪识别 官方baselin:https://g…...
【设计模式(三) 设计模式的分类 】
设计模式(DesignPattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 使用设计模式的目的 :为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编写真正工程化;设计模式是软件工程…...
Linux进程概念(个人笔记)
Linux进程概念 1.冯诺依曼体系结构2.操作系统(先描述,再组织)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笔试题和面试题作为示例,并给出答案或解释。如果需要更多题目,可以根据这些示例进行扩展或参考相关文档。 1. MySQL是什么? 答案:MySQL是一个关系型数据库管理系统(RDBMS),…...
AI大模型的TTS评测
L-MTL(Large Multi-Task Learning)Models 是一种大规模多任务学习模型,通过结合 Mixture of Experts(MMoE)框架与 Transformer 模型,实现对 TTS(Text-to-Speech)系统中多个评估指标的…...
推荐一款可以下载B站视频和音频的工具
cobalt是一个免费的下载网站,主要是用于载视频和音频。只要你把相应的网址复制下来,然后打开cobalt网站,黏贴网址,选择要下载的格式,就可以下载相应的音频或者视频了。 该网站非常简洁,使用也很简单。目前只…...
中科数安 |-透明加密软件_无感透明加密 - 源头有保障
中科数安的透明加密软件是一款专为保护企业数据安全而设计的高级产品,它采用了无感透明加密技术,确保源头数据的安全可靠。 ——www.weaem.com 以下是该软件的主要特点和功能概述: 无感透明加密: 中科数安的透明加密软件能够在用…...
ui自动化selenium,清新脱俗代码,框架升级讲解
一:简化 1. 新建common 包 新建diver.py 封装浏览器驱动类 from selenium import webdriverclass Driver():"""浏览器驱动类定义 一个【获取浏览器驱动对象driver的方法】。支持多种类型浏览器"""def get_driver(self,browser_typ…...
【吊打面试官系列-Mysql面试题】Myql 中的事务回滚机制概述 ?
大家好,我是锋哥。今天分享关于 【Myql 中的事务回滚机制概述 ?】面试题,希望对大家有帮助; Myql 中的事务回滚机制概述 ? 事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位…...
VMware虚拟机三种网络模式设置 - Bridged(桥接模式)
一、前言 由于linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费。那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有vmware workstations和virtual box等。 在使用虚…...
关于Panabit在资产平台中类型划分问题
现场同事问了一个问题:Panabit能不能当做CentOS接入? 我第一反应是:Panabit是个什么鬼?为啥要混编接入?后期维护都是事啊。所以,我就想回答:不能! 但是,最好要给出一个…...
【C语言】12.C语言内存函数
文章目录 1.memcpy使用和模拟实现2.memmove使用和模拟实现3.memset函数的使用4.memcmp函数的使用 memcpy:内存拷贝 memmove:内存移动 memset:内存设置 memcmp:内存比较 1.memcpy使用和模拟实现 memcpy:内存拷贝 void…...
Django:如何将多个数据表内容合在一起返回响应
一.概要 Django写后端返回响应时,通常需要返回的可能不是一个数据表的内容,还包括了这个数据表的外键所关联的其他表的一些字段,那该如何做才能把他们放在一起返回响应呢? 二.处理方法 在这里我有三个数据表 第一个是航空订单&…...
棱镜七彩荣获CNNVD两项大奖,专业能力与贡献再获认可!
6月18日,国家信息安全漏洞库(CNNVD)2023年度工作总结暨优秀表彰大会在中国信息安全测评中心成功举办。棱镜七彩凭借在漏洞方面的突出贡献和出色表现,被授予“2023年度优秀技术支撑单位”与“2023年度最佳新秀奖”。 优秀技术支撑单…...
uni-app中使用富文本rich-text个人经验
rich-text是在uni-app一个内置组件,用于高性能地渲染富文本内容。先贴一下官方的属性列表: 先说一下“selectable” 长按选择区域复制,这个我在APP项目中 不起作用,可能像文档说的,只支持“百度小程序”吧。在APP端起作…...
Matlab|基于V图的配电网电动汽车充电站选址定容-可视化
1主要内容 基于粒子群算法的电动汽车充电站和光伏最优选址和定容 关键词:选址定容 电动汽车 充电站位置 仿真平台:MATLAB 主要内容:代码主要做的是一个电动汽车充电站和分布式光伏的选址定容问题,提出了能够计及地理因素和服…...
从零开始! Jupyter Notebook的安装教程
🚀 从零开始! Jupyter Notebook的安装教程 摘要 📄 Jupyter Notebook 是一个广受欢迎的开源工具,特别适合数据科学和机器学习的开发者使用。本文将详细介绍从零开始安装 Jupyter Notebook 的步骤,包括各种操作系统的安装方法&am…...
web前端信息卡:深入探索与实用指南
web前端信息卡:深入探索与实用指南 在数字化时代,web前端信息卡已成为我们日常生活和工作中的重要组成部分。这些小巧而强大的工具,能够在有限的空间内展示丰富的信息,提升用户体验。然而,设计一个出色的web前端信息卡…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
Linux 下 DMA 内存映射浅析
序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...
