PHP编码规范之PSR-4自动加载

FIG制定的PHP规范,简称PSR,是PHP开发的事实标准。

PSR原本有四个规范,分别是:

PSR-0 自动加载
PSR-1 基本代码规范
PSR-2 代码样式
PSR-3 日志接口
PSR-4 自动加载

1. 概述

这个PSR描述了从文件路径自动加载类的规范。除了包括PSR-0在内的其他自动加载规范外,还可以使用。 这个PSR还描述了根据规范放置文件的位置。

2. 规范

  1. 术语“类”是指 classes、 interfaces、traits和其他类似的结构。

  2. 完全限定的类名具有以下形式:

    • \<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
    • 完全限定的类名必须有一个顶级命名空间名称,也被称为“vendor命名空间”。
    • 完全限定的类名可以有一个或多个子名称空间名称。
    • 完全限定的类名必须有一个终止类名。
    • 下划线在全限定类名的任何部分都没有特殊含义。
    • 完全限定类名中的字母可以是小写和大写的任意组合。
    • 所有类名必须以区分大小写的方式引用。
  3. 加载与完全限定的类名相对应的文件时…
    • 全限定类名称(“命名空间前缀”)中的一个或多个前导名称空间和子名称空间名称(不包括前导名称空间分隔符)的连续序列对应于至少一个“基本目录”。
    • “命名空间前缀”之后的子命名空间名称对应于“基本目录”内的子目录,其中名称空间分隔符表示目录分隔符。 子目录名称必须匹配子命名空间名称的大小写。
    • 终止类名对应于以.php结尾的文件名。 文件名必须匹配终止类名的大小写。
  4. 自动加载器的实现不能抛出异常,不能引发任何级别的错误,也不应该返回一个值。

3. 示例

下表显示给定的完全限定类名,名称空间前缀和基本目录的相应文件路径。

全限定类名称空间前缀基本目录文件路径
\Acme\Log\Writer\File_WriterAcme\Log\Writer./acme-log-writer/lib/./acme-log-writer/lib/File_Writer.php
\Aura\Web\Response\StatusAura\Web/path/to/aura-web/src//path/to/aura-web/src/Response/Status.php
\Symfony\Core\RequestSymfony\Core./vendor/Symfony/Core/./vendor/Symfony/Core/Request.php
\Zend\AclZend/usr/includes/Zend//usr/includes/Zend/Acl.php

示例中,符合规范的自动加载程序的实现,请参阅示例文件。示例实现不能被视为规范的一部分,并且随时可能发生变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值