跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • PHP Class 使用全命名空间有什么坏处?
未分類
5 2 月 2021

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

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

資深大佬 : a7dog 2

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

// 方法 1 use ModelSpaceUser;  User::find($id)  // vs // 方法 2 ModelSpaceUser::find($id); 

大佬有話說 (29)

  • 資深大佬 : qwertyzzz

    丑

  • 主 資深大佬 : a7dog

    @qwertyzzz 看习惯也还行,一看就知道是属于哪里的

  • 資深大佬 : 334132462

    唯一缺点 可能取类名时得想很久

  • 資深大佬 : keepeye

    都感觉有点陌生了,两年多没写 PHP 了

  • 資深大佬 : Makoto

    这样真的感觉很长,而且代码量比较重复

  • 資深大佬 : lovecy

    有工具插件能自动补全也还行,

  • 主 資深大佬 : a7dog

    @Makoto 也就是 namespace 重复,但是实际上就是一个字母,并不长

  • 資深大佬 : agdhole

    全局替换你直接替换 use 的不也可以吗?

  • 主 資深大佬 : a7dog

    @agdhole 换 use 的,对应使用的的 class 会自动改吗,或者有插件可以实现这个功能?比如

    use ModelSpaceUser; 变成了 use ModelSpaceStaff,

    User::find($id) 会自动变成 Staff::find($id) ?

  • 資深大佬 : agdhole

    @a7dog #9 使用 phpstorm 重构功能

  • 資深大佬 : junan0708

    use ModelSpaceStaff as User 。不是更简单?

  • 資深大佬 : BeautifulSoap

    所以说这不就体现了 IDE 的优点了

    用 IDE 的话把 User 改名了,它会自动分析其他代码将所有引用了 User 的地方自动改成 Staff

  • 資深大佬 : lap510200

    第一种配合 ide 用就很方便和稳,第二种和每个类起唯一名没啥区别

  • 主 資深大佬 : a7dog

    @junan0708 这样感觉不好,如果改名,会全部改

  • 主 資深大佬 : a7dog

    @BeautifulSoap 这就很强大了,VSC 还没看到这个功能

  • 資深大佬 : drush

    @junan0708 #11 接手的人怕会天天想念你

  • 資深大佬 : debuggerx

    1. 即使是只有自己会看会写的代码,最好也不要抱着“看习惯也还行”的想法写大多数人不习惯的代码,否则写别的代码的时候也会缺乏规范意识。
    2. 善用 IDE,编辑器终归只是编辑器。想想那么多人宁愿花钱用 IDE 都不选免费的 vsc 就知道,差距还是不小的。

  • 主 資深大佬 : a7dog

    @debuggerx 实际上只有 model 类的代码会这样,团队 4 人,实际开发中感觉没有什么不便。

  • 資深大佬 : changz

  • 資深大佬 : BeautifulSoap

    @a7dog VSC 也只是编辑器,基于文本的查找替换行,但是涉及到变量重命名这种场景的时候,是需要编辑器分析理解整个项目代码的,这种重量级的功能需求还是主流 IDE 才行

  • 資深大佬 : sanqian

    这样真的丑。。

  • 資深大佬 : klgd

    @keepeye #4 两年? 是 10 年吧 php 的命名空间是 5.3 时引入的 现在都 8 了

  • 資深大佬 : keepeye

    @klgd 我是说两年没写 php 看代码有点生疏,不是说没接触过命名空间

  • 資深大佬 : k396656156

    看不懂你要这样写,你改起来不是很麻烦,改漏了不是出问题了

  • 資深大佬 : Still4

    太长了,不方便看,你举的例子里面只用了一次,如果调用几十次,第一眼看过去,你自己都会骂哪个傻*这么写的,都不知道精简下

    use TencentAdsModelAdsGetResponseData;
    use TencentAdsModelAdvertiserGetListStruct;
    use TencentAdsModelAdvertiserGetResponseData;
    use TencentAdsModelBusinessManagerRelationsGetResponseData;
    use GoogleAdsGoogleAdsV5EnumsAdGroupStatusEnumAdGroupStatus;
    use GoogleAdsGoogleAdsV5EnumsCampaignStatusEnumCampaignStatus;

    给你看下某个广告库的代码,光是引用就这么长,意味着你要是看代码逻辑得拖到屏幕一半,心理负担太重

  • 資深大佬 : guanhui07

    use ModelSpaceStaff as User

  • 資深大佬 : konakona

    那是因为你没有用好的 IDE ! phpstorm,你重构一个类的名称,那么所有项目底下使用到这个类的都会自己改。

  • 主 資深大佬 : a7dog

    @Still4 这么长应该会用 use 的,我们实际用全 namespace 只在一个字母的 namespace 情况下

  • 資深大佬 : MengiNo

    不过现在 IDE 补全的时候都会自动导包吧… 就算是第二种写法 只要写个 User::find 后面选好补全后,IDE 不就自己会去 use 一个叫 User 的类进来。我用 vscode 是比较习惯手动选包,但是 phpstorm 这种早就把代码分析好了,应该直接就可以回车补全 + 导包 同时完成吧。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具