PHP规范PSR4(自动加载)介绍

本文描述了PSR-4自动加载类的规范,该规范可与其他自动加载规范一起使用,如PSR-0。它详细说明了如何根据完全限定的类名定位文件路径,包括命名空间和类名的大小写匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文档中的关键词“必须”,“必须”,“必需”,“应该”,“不应该”,“应该”,“不应该”,“推荐”,“可以”和“可选”按照RFC 2119中的描述进行解释。

1 概述

此PSR描述了从文件路径自动加载类的规范。它完全可互操作,除了包括PSR-0在内的任何其他自动加载规范外,还可以使用它。此PSR还描述了根据规范放置将自动加载的文件的位置。

2 细则

(1)术语“类”指的是类,接口,特征和其他类似结构。

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

\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
  1. 完全限定的类名必须具有顶级命名空间名称,也称为“供应商命名空间”。
  2. 完全限定的类名可以具有一个或多个子命名空间名称。
  3. 完全限定的类名必须具有终止类名。
  4. 下划线在完全限定类名的任何部分都没有特殊含义。
  5. 完全限定类名中的字母字符可以是小写和大写的任意组合。
  6. 必须以区分大小写的方式引用所有类名。

(3)加载对应于完全限定类名的文件时...

  1. 完全限定类名称(“名称空间前缀”)中的一个或多个前导命名空间和子命名空间名称的连续系列(不包括前导命名空间分隔符)对应于至少一个“基本目录”。
  2. “名称空间前缀”之后的连续子命名空间名称对应于“基本目录”中的子目录,其中名称空间分隔符表示目录分隔符。子目录名称必须与子命名空间名称的大小写匹配。
  3. 终止类名对应于以.php结尾的文件名。文件名必须与终止类名称的大小写相匹配。

(4) Autoloader实现绝不能抛出异常,不得引发任何级别的错误,并且不应返回值。

3 例子

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

FULLY QUALIFIED CLASS NAMENAMESPACE PREFIXBASE DIRECTORYRESULTING FILE PATH
\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、付费专栏及课程。

余额充值