PSR-4 自动载入

翻译自:

https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md


自动载入


1. 概述

这个 PSR 描述的是通过文件路径自动载入类的指南,它作为对 PSR-0 的补充;根据这个来规范存放文件以实现自动载入


2. 说明 Specification

  1. 术语 class 包含类 class,接口 interface,特性 traits 以及其他一些类似的结构

  2. 一个完整的限定类名应该按照如下范例:
    \<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>

    • 完整的限定类名 必须 有一个顶级命名空间,如 Vendor Name
    • 完整的限定类名 可以 有多个子命名空间
    • 完整的限定类名 必须 有一个终止的类名
    • 下划线 _ 在完整的限定类名中没有特殊含义
    • 字母字符在完整的限定类名中 可以 是任何的大小写组合
    • 所有的类名 必须 以大小写敏感的方式引入
  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

关于规范就先告一段落了目前 PSR-1PSR-2PSR-4 就已经暂时够用了,其他的需要的时候再看吧,长时间不用也忘的挺快的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值