> psr-0
作曲家
作曲家出现并席卷了PHP软件包管理世界时,情况发生了变化。由于其某些规则,文件夹通常会重复,并且在通过作曲家查看PSR-0类安装时变得太深了。例如,某些文件夹结构最终以这样的方式出现:
这充其量是混乱的,因为:
vendor/ vendor_name/ package_name/ src/ Vendor_Name/ Package_Name/ ClassName.php # Vendor_Name\Package_Name\ClassName tests/ Vendor_Name/ Package_Name/ ClassNameTest.php # Vendor_Name\Package_Name\ClassNameTest
>“ SRC”和“测试”目录必须包括供应商和软件包目录名称。这是PSR-0符合性的工件。
>PSR-4旨在在必要时与PSR-0进行补充并与之合作,而不是完全替代它。它可以,但不必。 PSR-4的主要目标是完全删除PSR-0和5.3天前的残余物,并允许更简洁的文件夹结构。使用PSR-4,上述文件夹将看起来像这样:因此,一些高素质的PHP开发人员聚集在一起,为新标准提出了建议:PSR-4。
> psr-4
因为PSR-0不允许在类名称的任何部分之间进行插图
vendor/ vendor_name/ package_name/ src/ ClassName.php # Vendor_Name\Package_Name\ClassName tests/ ClassNameTest.php # Vendor_Name\Package_Name\ClassNameTest
>这非常重要 - 这意味着实施PSR-4虽然允许更清洁的软件包,但实施将变得更加复杂。我们称呼为PSR-4包装的自动加载,因为它有利于简单之前的包裹清洁度。
>建议的目标如下:保留所有软件包必须至少包含两个命名空间级别(供应商和软件包)的PSR-0规则,请确保供应商包装组合可以映射到任何文件夹,并允许使用fifix供应商包装组合和其余完全合格的班级名称之间的文件夹。
>
此外,草案明确指出,PSR-4自动加载器绝不应仅仅因为可以注册多个自动加载器而引起异常或引起错误,并且如果一个人未能加载班级,则应该给其他机会这样做,而其他人则有机会这样做 - 投掷 - 投掷错误并停止流量破坏了此兼容性。如果需要有关故障的其他信息,则应使用PSR-3兼容记录器或其他任意手段。
如示例文件中所示,使用PSR-4自动加载器从以下结构加载类:
看起来像这样:
在其中调用新的foobarquxquux;将尝试从第一个注册目录加载,而新的foobarquxquuxtest;将尝试从第二个加载。
vendor/ vendor_name/ package_name/ src/ Vendor_Name/ Package_Name/ ClassName.php # Vendor_Name\Package_Name\ClassName tests/ Vendor_Name/ Package_Name/ ClassNameTest.php # Vendor_Name\Package_Name\ClassNameTest
此示例还说明了每个单个名称空间的多个文件夹的使用。
>vendor/ vendor_name/ package_name/ src/ ClassName.php # Vendor_Name\Package_Name\ClassName tests/ ClassNameTest.php # Vendor_Name\Package_Name\ClassNameTest
自动加载中没有银色子弹。每种方法都带来了一些优点和缺点 - PSR-4将允许更简单的文件夹结构,但仅通过查看完全合格的名称就可以阻止我们知道班级的确切路径。另一方面,PSR-0在硬盘驱动器上是混乱的,但是支持过去陷入困境的开发人员(一流的名称用户),并通过查看其名称来帮助我们辨别班级的位置。
>您对PSR-4的感觉如何?在下面的评论中让我们知道,或在众多辩论之一中表达您的意见。
> PSR-0和PSR-4之间的主要区别在于它们处理名称空间和目录结构的方式。 PSR-0需要名称空间与目录结构之间的直接相关性,这意味着命名空间中的每个凸起都对应于目录分离器。另一方面,PSR-4允许采用更灵活的方法,其中一部分名称空间可以映射到任何目录,其余的名称空间可以映射到子目录结构。引入PSR-4时引入的PSR-4?引入了PSR-4,以克服PSR-0的某些局限性。 PSR-0在名称空间和目录结构之间的严格相关性导致了深度嵌套的目录,这并不总是实用或有效的。 PSR-4提供了一种更灵活的方法,使开发人员可以将命名空间映射到任何目录,从而减少了对深目录嵌套的需求。
> PSR-4在PSR-0上如何改善?通过提供更灵活的自动加载方法,PSR-4在PSR-0上有所改善。它允许开发人员将一部分名称空间映射到任何目录,从而减少对深目录嵌套的需求。这使得管理和浏览项目的目录结构变得更加容易。
以上是自动加载战:PSR-0对PSR-4的详细内容。更多信息请关注PHP中文网其他相关文章!