PHP Class 使用全命名空间有什么坏处?

2021-02-19 11:19:47 +08:00
 a7dog

一般的代码都是先 use 然后使用,但是这种不大好替换,搜索相关代码调用也不是很明了,我一般直接使用全路径,方便替换,比如 如果 User 要改成 Staff,可以全局搜索\ModelSpace\User 。 使用方法 2, 有什么不好的地方呢?很少看到别人这样做。

// 方法 1
use ModelSpace\User;

User::find($id)

// vs
// 方法 2
\ModelSpace\User::find($id);
3011 次点击
所在节点    PHP
30 条回复
sanqian
2021-02-19 14:17:51 +08:00
这样真的丑。。
klgd
2021-02-19 14:42:43 +08:00
@keepeye #4 两年? 是 10 年吧 php 的命名空间是 5.3 时引入的 现在都 8 了
keepeye
2021-02-19 15:27:39 +08:00
@klgd 我是说两年没写 php 看代码有点生疏,不是说没接触过命名空间
k396656156
2021-02-19 15:52:13 +08:00
看不懂你要这样写,你改起来不是很麻烦,改漏了不是出问题了
Still4
2021-02-19 16:08:55 +08:00
太长了,不方便看,你举的例子里面只用了一次,如果调用几十次,第一眼看过去,你自己都会骂哪个傻*这么写的,都不知道精简下

use TencentAds\Model\AdsGetResponseData;
use TencentAds\Model\AdvertiserGetListStruct;
use TencentAds\Model\AdvertiserGetResponseData;
use TencentAds\Model\BusinessManagerRelationsGetResponseData;
use Google\Ads\GoogleAds\V5\Enums\AdGroupStatusEnum\AdGroupStatus;
use Google\Ads\GoogleAds\V5\Enums\CampaignStatusEnum\CampaignStatus;

给你看下某个广告库的代码,光是引用就这么长,意味着你要是看代码逻辑得拖到屏幕一半,心理负担太重
guanhui07
2021-02-19 16:52:59 +08:00
use ModelSpace\Staff as User
konakona
2021-02-19 17:22:28 +08:00
那是因为你没有用好的 IDE ! phpstorm,你重构一个类的名称,那么所有项目底下使用到这个类的都会自己改。
a7dog
2021-02-19 17:39:34 +08:00
@Still4 这么长应该会用 use 的,我们实际用全 namespace 只在一个字母的 namespace 情况下
MengiNo
2021-02-19 19:06:33 +08:00
不过现在 IDE 补全的时候都会自动导包吧... 就算是第二种写法 只要写个 User::find 后面选好补全后,IDE 不就自己会去 use 一个叫 User 的类进来。我用 vscode 是比较习惯手动选包,但是 phpstorm 这种早就把代码分析好了,应该直接就可以回车补全 + 导包 同时完成吧。
chenzheyu
2021-06-03 15:09:33 +08:00
@a7dog
```
use ModelSpace\Staff as User,
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/754181

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX