PSR-4翻译,PHP Autoloader 规范

Autoloader

关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.

1. 概览

PSR-4约定了 PHP autoloading(自动加载机制)如何找到文件所在路径。这个规范是开放的,并且可以融入其他的autoloading的规范,包括PSR-0. 本文档也描述了如何根据规范来存放需要自动加载的文件。

2. 规范

  1. 下文提到的"class" 涵盖 classes, interfaces, traits, 和其他类似的结构体.

  2. 一个合法的完整类名如下:

    \<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
      1. 一个完整合法类名,必须包含一个顶级命名空间名,我们也称之为vendor namespace. 通常一个软件包会有一个独立的顶级命名空间。
      2. 完整的合法类名可以有一级或多级子命名空间。
      3. 完整的合法类名必须有最终类名。
      4. 下划线在完整的合法类名中任何位置出现都没有特殊含义。
      5. 完整的合法类名中,字幕可以有任意的大小写组合。
      6. 所有类名必须区分大小写。
  3. 当加载一个符合合法类名对应的文件时...

    1. 完整合法类名中,由一段或多段命名空间名组成,不包括命名空间前导分隔符的连续序列(命名空间前缀),须要符合至少一个基础目录(Base Directory)。
    2. 命名空间前缀之后的连续子命名空间 和 基础目录下的路径保持一致,命名空间分隔符替换为目录分隔符,子目录名大小写必须喝命名空间名保持一致。
    3. 最终类名加上 .php后缀几位文件名。 文件名的大小写必须喝最终类名一致。
  4. Autoloader 的实现不能抛出异常, 不能触发任何报错, 也不应该return value.

3. 例子

完整类名 命名空间前缀 基础目录 最终文件名
\Acme\Log\Writer\File_Writer Acme\Log\Writer ./acme-log-writer/lib/ ./acme-log-writer/lib/File_Writer.php
\Aura\Web\Response\Status Aura\Web /path/to/aura-web/src/ /path/to/aura-web/src/Response/Status.php
\Symfony\Core\Request Symfony\Core ./vendor/Symfony/Core/ ./vendor/Symfony/Core/Request.php
\Zend\Acl Zend /usr/includes/Zend/ /usr/includes/Zend/Acl.php

For example implementations of autoloaders conforming to the specification, please see the examples file. Example implementations MUST NOT be regarded as part of the specification and MAY change at any time.

Additional Info: 
  • PSR-4 — Autoloader
  • PSR-4 Meta Document
  • Example Implementations of PSR-4

你可能感兴趣的:(PHP,文档,autoload,PSR)