ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
## PSR-0/PSR-4命名标准 >[danger] PSR是Proposing a Standards Recommendation(提出标准建议)的缩写,是由PHP Framework Interoperability Group(PHP通用性框架小组,简称PHP-FIG)发起的,通过他们命名就可以看出,这是个主要是针对框架通用性而做努力的开放性小组,他们的在Github上有自己的仓库地址,目前只有一个被接受的标准,那就是PSR-0标准,标准定义了PHP自动加载的命名规范和文件路径规范。 针对PSR-0标准主要提到了以下几点: **要求:** 1. 一个完全合格的命名空间和类名必须有以下的结构“\<提供者名称>\(<命名空间>\)*<类名>” 2. 每个命名空间必须有顶级的命名空间(“提供者”) 3. 每个命名空间可以有任意多个子命名空间 4. 每个命名空间在被从文件系统加载时必须被转换为“操作系统路径分隔符”(DIRECTORY_SEPARATOR ) 5. 每个“_”字符在“类名”中被转换为DIRECTORY_SEPARATOR 。“_”符号在命名空间中没有这个含义 6. 符合命名标准的命名空间和类名必须以“.php”结尾来加载文件 7. 提供商名称,命名空间,类名可以由大小写字母组成,其中命名空间和类名是大小写敏感的以保证多系统兼容性 8. 如果文件不存在需要返回false > 对比PSR-0,除了PSR-4可以更简洁外,需要注意PSR-0中对下划线(_)是有特殊的处理的,下划线会转换成DIRECTORY_SEPARATOR,这是出于对PHP5.3以前版本兼容的考虑,而PSR-4中是没有这个处理的,这也是两者比较大的一个区别。 此外,PSR-4要求在autoloader中不允许抛出exceptions以及引发任何级别的errors,也不应该有返回值。这是因为可能注册了多个autoloaders,如果一个autoloader没有找到对应的class,应该交给下一个来处理,而不是去阻断这个通道。 PSR-4更简洁更灵活了,但这使得它相对更复杂了。例如通过完全符合PSR-0标准的class name,通常可以明确的知道这个class的路径,而PSR-4可能就不是这样了。 * * * * * ### 参考 [PHP-FIG — PHP Framework Interop Group](http://www.php-fig.org/) [PHP FIG - github](https://github.com/php-fig) [PHP FIG 标准规范中文版](https://psr.phphub.org/) [PHP 标准规范中文版发布](https://segmentfault.com/a/1190000005036857) ***** last update:2017-10-15 00:52:56