What Are the Differences Between PSR-0 and PSR-4?(PSR-0 和 PSR-4 有什么区别?)
问题描述
最近我读到了关于命名空间以及它们的好处的文章.我目前正在 Laravel 中创建一个项目,并尝试从类映射自动加载转移到命名空间.但是,我似乎无法理解 PSR-0 和 PSR-4 之间的实际区别.
Recently I've read about namespaces and how they are beneficial. I'm currently creating a project in Laravel and trying to move from class map autoloading to namespacing. However, I can't seem to grasp what the actual difference is between PSR-0 and PSR-4.
我读过的一些资源是……
- 自动装弹机之战
- Laracasts PSR-4 自动加载
- PSR-0
- PSR-4
我的理解:
- PSR-4 不会将下划线转换为目录分隔符
- composer 的某些特定规则会导致目录结构变得复杂,从而使 PSR-0 命名空间变得冗长,因此创建了 PSR-4
将不胜感激提供解释差异的示例.
Examples explaining the difference would be appreciated.
推荐答案
它们非常相似,因此有点令人困惑也就不足为奇了.总结是 PSR-0 对 PSR-4 删除的 PEAR 样式类名有一些向后兼容的特性,因此它只支持命名空间代码.除此之外,PSR-4 并不强制你将整个命名空间作为一个目录结构,而只是锚点之后的部分.
They are very similar so it is not surprising that it's a bit confusing. The summary is that PSR-0 had some backwards compatibility features for PEAR-style classnames that PSR-4 dropped, as such it only supports namespaced code. On top of that PSR-4 does not force you to have the whole namespace as a directory structure, but only the part following the anchor point.
例如,如果您定义 AcmeFoo
命名空间锚定在 src/
中,使用 PSR-0 意味着它将查找 Acme
而在 PSR-4 中它将在 src/Acme/Foo/Bar.php
中的 FooBarsrc/Bar.php
中查找它,允许更短的目录结构.另一方面,有些人更喜欢拥有完整的目录结构以清楚地查看哪个命名空间中的内容,因此您也可以说 AcmeFoo
在 src/Acme/Foo代码> 与 PSR-4 将提供与上述 PSR-0 行为等效的行为.
For example if you define that the AcmeFoo
namespace is anchored in src/
, with PSR-0 it means it will look for AcmeFooBar
in src/Acme/Foo/Bar.php
while in PSR-4 it will look for it in src/Bar.php
, allowing for shorter directory structures. On the other hand some prefer to have the full directory structure to clearly see what is in which namespace, so you can also say that AcmeFoo
is in src/Acme/Foo
with PSR-4 which will gives you the equivalent of the PSR-0 behavior described above.
对于新项目以及大多数意图和目的来说,长话短说,您可以使用 PSR-4 而忘记 PSR-0.
Long story short for new projects and for most intents and purposes, you can use PSR-4 and forget all about PSR-0.
这篇关于PSR-0 和 PSR-4 有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:PSR-0 和 PSR-4 有什么区别?
基础教程推荐
- Libpuzzle 索引数百万张图片? 2022-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 在多维数组中查找最大值 2021-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- 超薄框架REST服务两次获得输出 2022-01-01