规范了自动载入类的机制
完整的类型 根命名空间子命名空间类名
类名
- 完整的命名空间必须要有根命名空间
- 完整的类名可以有多个字命名空间 如 VendorCakeNameClassName
- 完整的类名最右边必须有一个类名
- 完整的类名任意一部分中的下划线都没有特殊含义
- 完整的类名可以由任意的大小写字母构成
- 所有的类名必须是大小写敏感的
载入机制
- 完整的类名中,去掉最前面的命名空间分隔符,前面连续的一个或多个命名空间和子命名空间,作为「命名空间前缀」,其必须与至少一个「文件基目录」相对应
- 紧接命名空间前缀后的子命名空间 必须 与相应的「文件基目录」相匹配,其中的命名空间分隔符将作为目录分隔符
- 末尾的类名 必须 与对应的以 .php 为后缀的文件同名。
- 自动加载器(autoloader)的实现 一定不可 抛出异常、一定不可 触发任一级别的错误信息以及 不应该 有返回值
下表展示了符合规范完整类名、命名空间前缀和文件基目录所对应的文件路径。
完整类名 | 命名空间前缀 | 文件基目录 | 文件路径 |
---|---|---|---|
AcmeLogWriterFile_Writer | AcmeLogWriter | ./acme-log-writer/lib/ | ./acme-log-writer/lib/File_Writer.php |
AuraWebResponseStatus | AuraWeb | /path/to/aura-web/src/ | /path/to/aura-web/src/Response/Status.php |
SymfonyCoreRequest | SymfonyCore | ./vendor/Symfony/Core/ | ./vendor/Symfony/Core/Request.php |
endAcl | Zend | /usr/includes/Zend/ | /usr/includes/Zend/Acl.php |
未完待续