[2
这充其量是混乱的,因为:
“ SRC”和“测试”目录必须包括供应商和软件包目录名称。这是PSR-0合规性的工件。
因此,一些高素质的PHP开发人员聚集在一起,为新标准提出建议:PSR-4。psr-4
升级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
因为PSR-0不允许在类名称
的任何部分之间进行插图路径选择的方法这非常重要 - 这意味着实施PSR-4在允许更加清洁的软件包的同时,实施将变得更加复杂。我们称呼为PSR-4面包套件的自动加载,因为它有利于简单之前的包裹清洁度。
建议的目标如下:保留所有软件包必须至少包含两个命名空间级别(供应商和软件包)的PSR-0规则,请确保供应商包装组合可以映射到任何文件夹,并允许在供应商包装组合和完全合格的类名称中的供应商包装组合之间的文件夹中插图。
这意味着我们将能够将我们的类放在软件包代码中的任何位置,对我们作为人类很有意义,并且仍然在PHP中平稳地使用它们,而无需编写替代加载技术或求助于手动加载。/path/to/packages/foo-bar/ src/ baz.php#foo \ bar \ baz qux/ quux.php#foo \ bar \ qux \ quux 测试/ baztest.php#foo \ bar \ baztest qux/ quuxtest.php#foo \ bar \ qux \ quuxtest
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看起来像这样:
register(); //注册命名空间前缀的基本目录 $ loader-> addNamespace('foo \ bar',''/path/to/packages/foo-bar/src'); $ loader-> addNamespace('foo \ bar',''/path/to/packages/foo-bar/tests');
此示例还说明了每个单个名称空间的多个文件夹的使用。wall呼叫new \ foo \ bar \ qux \ quux;将尝试从第一个注册目录加载,而新的\ foo \ bar \ qux \ quuxtest;将尝试从第二个加载。
结论
您对PSR-4的感觉如何?在下面的评论中让我们知道,或在众多辩论之一中表达您的意见。
无论哪种方式 - 毫无疑问,面向软件包的自动加载将留在这里。如果未正式接受为标准,则由需要它的人实施自定义。我们必须加入讨论并提高该概念以达到正式状态。
经常询问有关PSR-0和PSR-4自动加载的问题
为什么PSR-4已介绍了PSR-0已放在原位时介绍了PSR-&& &&&&&&&&&&&&&&&&&&psr的某些限制的限制为限制的限制为限制范围。 PSR-0在名称空间和目录结构之间的严格相关性导致了深度嵌套的目录,这并不总是实用或有效的。 PSR-4提供了一种更灵活的方法,使开发人员可以将命名空间映射到任何目录,从而减少了对深目录嵌套的需求。
我可以在同一项目中同时使用PSR-0和PSR-4吗?/path/to/packages/foo-bar/ src/ Baz.php # Foo\Bar\Baz Qux/ Quux.php # Foo\Bar\Qux\Quux tests/ BazTest.php # Foo\Bar\BazTest Qux/ QuuxTest.php # Foo\Bar\Qux\QuuxTest
How does PSR-4 improve upon PSR-0?
register(); // register the base directories for the namespace prefix $loader->addNamespace('Foo\Bar', '/path/to/packages/foo-bar/src'); $loader->addNamespace('Foo\Bar', '/path/to/packages/foo-bar/tests');已弃用了?
是的,PSR-0已被标记为已弃用。这意味着,尽管它仍然有效,但不建议在新项目中使用。 PSR-4是php中自动加载的推荐标准。
在psr-4中自动加载如何工作?在psr-4中,自动加载可以通过将一部分名称空间映射到任何目录中来自动加载。然后将其余的名称空间映射到子目录结构。这允许采用自动加载的更灵活,更有效的方法。
使用PSR-4?涉及更改名称空间和目录的方式。在PSR-4中,可以将一部分名称空间映射到任何目录,其余的名称空间可以映射到子目录结构。这可能需要重组项目的目录结构。
我可以在较旧的PHP版本中使用psr-4吗?在PHP中自动加载的未来是什么?
[&& && && &&华未来,PHP中PHP的未来可能会继续不断发展,新的标准和练习是在语言和ecosystems and ecosystems and ecosystems and ecosystems and ecossystems and ecossystems and evolveve and Evenve evolveve。但是,在可预见的将来,PSR-4是PHP中自动加载的建议标准。免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3