psr标准解读

本文详细解读了PHP的PSR标准,包括PSR-0到PSR-4,它们是PHP-FIG(PHP框架可互用性小组)制定的一套规范。PSR-0规范了命名空间和类名的自动加载规则,而PSR-4是其改进版,进一步优化了自动加载和命名空间的对应关系。PSR-1和PSR-2分别针对基础编码和编码风格给出了标准。PSR-3则是关于日志类的标准接口。遵循这些标准,能提升代码的可读性和互用性。
摘要由CSDN通过智能技术生成

问:PSR是什么?有什么作用?

答:psr 中文翻译过来是 提出标准建议。所以它是一套建议标准,那它是建议谁的呢?它是由PHP-FIG 翻译过来就是php 框架可互用性小组编写的,那当然是用来约束PHP的。其实呀并不是官方的组织,只是在php界影响力很大,而且确实这套标准很有用,所以大家都遵循这套标准了,就好比江湖中总有一些规矩,这样大家按规矩来,事情就好办了很多。

 

具体来说psr这是一套标准,是由5部分组成,分别是psr-0,psr-1,psr-2,psr-3,psr-4.是不是看到这里有点头皮发麻,难不成又是一本超过800页的文学著作,哈哈,没有,这套标准实际没有那么繁琐,他就是规定了几个标准,行走在php江湖,只要你遵循这套标准,畅通无阻。

简单来说按规范对象来说,其实是分成四部分的,-0和-4是一部分,-4是对-0的补充修正,可以归类为一套,剩余的各成一套。

Psr-0:自动加载标准:(官方给出来的条款)

1、一个完全合格的namespace和class必须符合这样的结构:“\< Vendor Name>(< Namespace>)*< Class Name>”

2、每个namespace必须有一个顶层的namespace("Vendor Name"提供者名字)

3、每个namespace可以有多个子namespace

4、当从文件系统中加载时,每个namespace的分隔符(/)要转换成 DIRECTORY_SEPARATOR(操作系统路径分隔符)

5、在类名中,每个下划线(_)符号要转换成DIRECTORY_SEPARATOR(操作系统路径分隔符)。在namespace中,下划线(_)符号是没有(特殊)意义的。

6、当从文件系统中载入时,合格的namespace和class一定是以 .php 结尾的

7、vendor name,namespaces,class名可以由大小写字母组合而成(大小写敏感的)

这套标准其实主要就是对命名空间进行了规范,让其与文件系统的路径对应起来,然后对下划线命名空间和类名中分别进行了规范,同时对类名和方法名也进行了规范,如此便能在使用自动加载功能的时候,通过该规则方便的将所需的文件加载进来。不过这套标准存在一些不足,并不能满足面向package的自动加载(PSR0标准只负责顶级命名空间之后的映射关系,而顶层命名空间/Symfony应该关联到哪个目录,那就是用户或者框架自己定义的了)。因此,psr-4孕育而生。Psr-4能够满足面向package的自动加载,它规范了如何从文件路径自动加载类,同时也规范了自动加载文件的位置(psr-4要求循环去查找文件,在while循环中,会慢慢的缩短命名空间前缀的名称去需找合适的命名空间前缀为了在命名空间中包含更多的内容,不用每次在父命名空间中新建一个文件夹的时候都去添加一个新的命名空间前缀)。

Psr-4:改进版自动加载规范(官方给出来的条款)

1.2.1 术语"class"是指classes类, interfaces接口, traits特性, 以及其他类似的结构.

1.2.2 一个完全合乎规格的类名(A fully qualified class name)格式如下:

        \<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>

        (1) 完全合规的类名必须(MUST)有一个顶级命名空间名称,也就是通常所说的"vendor命名空间".

        (2) 完全合规的类名可以(MAY)有一个或多个二级命名空间名称(sub-namespace names).

       (

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值