gpt4 book ai didi

PHP 命名空间约定 - 双倍命名空间

转载 作者:行者123 更新时间:2023-12-04 16:51:23 24 4
gpt4 key购买 nike

有时我会看到双倍的命名空间,例如:Namespace/Namespace/Subnamespace/
例如新的 Prestashop (1.7) 使用这个约定namespace PrestaShop\PrestaShop\Core;
有人可以向我解释这种命名空间的好处吗?

还有一些教程说这样的命名空间:

namespace mynamespace/classname
classs classname {}

这有什么好处?因为我只看到缺点:更复杂的命名空间和更多的输入。

还看到了这个问答: PHP Namespace Questions
我只能看到缺点:更容易出现错误,因为它取决于相对命名空间

PS:我一直使用绝对命名空间。我的感觉不太容易出错,如果我错了,请赐教。

最佳答案

如前所述,这是用于自动加载并遵循 PSR-4 约定。命名空间的命名约定通常由创建者决定。唯一需要的部分是顶级命名空间,但如果需要,可以使用许多子命名空间。

例如在 PrestaShop 的 composer.json他们有:

"autoload": {
"psr-4": {
"PrestaShop\\PrestaShop\\": "src/",
"PrestaShopBundle\\": "src/PrestaShopBundle/"
}
}

所以命名空间 PrestaShop\PrestaShop\可以带您到 src内的任何事情.

slim框架(路由器)他们有:
"autoload": {
"psr-4": {
"Slim\\": "Slim"
}
}

所以在那个中你只需使用命名空间 Slim\Class .

在我的第一个项目中,我做了类似的事情:
"autoload": {
"psr-4": {
"App\\Models\\": "app_name/models",
"App\\Validators\\": "app_name/validators"
//And so on
}
}

我不认为这会伤害任何东西,但最终是多余的。

关于PHP 命名空间约定 - 双倍命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38700101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com