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);
2818 次点击
所在节点    PHP
30 条回复
qwertyzzz
2021-02-19 11:23:52 +08:00
a7dog
2021-02-19 11:25:26 +08:00
@qwertyzzz 看习惯也还行,一看就知道是属于哪里的
334132462
2021-02-19 11:30:15 +08:00
唯一缺点 可能取类名时得想很久
keepeye
2021-02-19 11:34:46 +08:00
都感觉有点陌生了,两年多没写 PHP 了
Makoto
2021-02-19 11:34:47 +08:00
这样真的感觉很长,而且代码量比较重复
lovecy
2021-02-19 11:37:24 +08:00
有工具插件能自动补全也还行,
a7dog
2021-02-19 11:39:00 +08:00
@Makoto 也就是 namespace 重复,但是实际上就是一个字母,并不长
agdhole
2021-02-19 11:40:05 +08:00
全局替换你直接替换 use 的不也可以吗?
a7dog
2021-02-19 11:42:10 +08:00
@agdhole 换 use 的,对应使用的的 class 会自动改吗,或者有插件可以实现这个功能?比如

use ModelSpace\User; 变成了 use ModelSpace\Staff,

User::find($id) 会自动变成 Staff::find($id) ?
agdhole
2021-02-19 11:45:40 +08:00
@a7dog #9 使用 phpstorm 重构功能
junan0708
2021-02-19 11:46:00 +08:00
use ModelSpace\Staff as User 。不是更简单?
BeautifulSoap
2021-02-19 11:49:47 +08:00
所以说这不就体现了 IDE 的优点了

用 IDE 的话把 User 改名了,它会自动分析其他代码将所有引用了 User 的地方自动改成 Staff
lap510200
2021-02-19 11:52:22 +08:00
第一种配合 ide 用就很方便和稳,第二种和每个类起唯一名没啥区别
a7dog
2021-02-19 11:52:33 +08:00
@junan0708 这样感觉不好,如果改名,会全部改
a7dog
2021-02-19 11:54:00 +08:00
@BeautifulSoap 这就很强大了,VSC 还没看到这个功能
drush
2021-02-19 11:56:21 +08:00
@junan0708 #11 接手的人怕会天天想念你
debuggerx
2021-02-19 12:09:38 +08:00
1. 即使是只有自己会看会写的代码,最好也不要抱着“看习惯也还行”的想法写大多数人不习惯的代码,否则写别的代码的时候也会缺乏规范意识。
2. 善用 IDE,编辑器终归只是编辑器。想想那么多人宁愿花钱用 IDE 都不选免费的 vsc 就知道,差距还是不小的。
a7dog
2021-02-19 12:21:26 +08:00
@debuggerx 实际上只有 model 类的代码会这样,团队 4 人,实际开发中感觉没有什么不便。
changz
2021-02-19 12:31:24 +08:00
😏
BeautifulSoap
2021-02-19 13:41:57 +08:00
@a7dog VSC 也只是编辑器,基于文本的查找替换行,但是涉及到变量重命名这种场景的时候,是需要编辑器分析理解整个项目代码的,这种重量级的功能需求还是主流 IDE 才行

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

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

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

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

© 2021 V2EX