【php】【psr】psr4 自动加载规范

规范了自动载入类的机制

完整的类型 \根命名空间\子命名空间\类名

类名

  • 完整的命名空间必须要有根命名空间
  • 完整的类名可以有多个字命名空间 如 \Vendor\Cake\Name\ClassName
  • 完整的类名最右边必须有一个类名
  • 完整的类名任意一部分中的下划线都没有特殊含义
  • 完整的类名可以由任意的大小写字母构成
  • 所有的类名必须是大小写敏感的

载入机制

  • 完整的类名中,去掉最前面的命名空间分隔符,前面连续的一个或多个命名空间和子命名空间,作为「命名空间前缀」,其必须与至少一个「文件基目录」相对应
  • 紧接命名空间前缀后的子命名空间 必须 与相应的「文件基目录」相匹配,其中的命名空间分隔符将作为目录分隔符
  • 末尾的类名 必须 与对应的以 .php 为后缀的文件同名。
  • 自动加载器(autoloader)的实现 一定不可 抛出异常、一定不可 触发任一级别的错误信息以及 不应该 有返回值

下表展示了符合规范完整类名、命名空间前缀和文件基目录所对应的文件路径。

完整类名 命名空间前缀 文件基目录 文件路径
\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

未完待续

猜你喜欢

转载自www.cnblogs.com/china-flint/p/11133776.html