a7dog
V2EX  ›  PHP

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

  •  
  •   a7dog · Feb 19, 2021 · 4492 views
    This topic created in 2083 days ago, the information mentioned may be changed or developed.

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

    // 方法 1
    use ModelSpace\User;
    
    User::find($id)
    
    // vs
    // 方法 2
    \ModelSpace\User::find($id);
    
    30 replies  •  2021-06-03 15:09:33 +08:00
    asLw0P981N0M0TCC
    asLw0P981N0M0TCC
    Feb 19, 2021
    1
    丑
    a7dog
    a7dog
    OP
    Feb 19, 2021
    2
    @qwertyzzz 看习惯也还行,一看就知道是属于哪里的
    334132462
    334132462
    Feb 19, 2021
    3
    唯一缺点 可能取类名时得想很久
    keepeye
    keepeye
    Feb 19, 2021
    4
    都感觉有点陌生了,两年多没写 PHP 了
    Makoto
    Makoto
    Feb 19, 2021
    5
    这样真的感觉很长,而且代码量比较重复
    lovecy
    lovecy
    Feb 19, 2021
    6
    有工具插件能自动补全也还行,
    a7dog
    a7dog
    OP
    Feb 19, 2021
    7
    @Makoto 也就是 namespace 重复,但是实际上就是一个字母,并不长
    agdhole
    agdhole
    Feb 19, 2021
    8
    全局替换你直接替换 use 的不也可以吗?
    a7dog
    a7dog
    OP
    Feb 19, 2021
    9
    @agdhole 换 use 的,对应使用的的 class 会自动改吗,或者有插件可以实现这个功能?比如

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

    User::find($id) 会自动变成 Staff::find($id) ?
    agdhole
    agdhole
    Feb 19, 2021
    10
    @a7dog #9 使用 phpstorm 重构功能
    junan0708
    junan0708
    Feb 19, 2021
    11
    use ModelSpace\Staff as User 。不是更简单?
    BeautifulSoap
    BeautifulSoap
    Feb 19, 2021
    12
    所以说这不就体现了 IDE 的优点了

    用 IDE 的话把 User 改名了,它会自动分析其他代码将所有引用了 User 的地方自动改成 Staff
    lap510200
    lap510200
    Feb 19, 2021
    13
    第一种配合 ide 用就很方便和稳,第二种和每个类起唯一名没啥区别
    a7dog
    a7dog
    OP
    Feb 19, 2021
    14
    @junan0708 这样感觉不好,如果改名,会全部改
    a7dog
    a7dog
    OP
    Feb 19, 2021
    15
    @BeautifulSoap 这就很强大了,VSC 还没看到这个功能
    drush
    drush
    Feb 19, 2021
    16
    @junan0708 #11 接手的人怕会天天想念你
    debuggerx
    debuggerx
    Feb 19, 2021
    17
    1. 即使是只有自己会看会写的代码,最好也不要抱着“看习惯也还行”的想法写大多数人不习惯的代码,否则写别的代码的时候也会缺乏规范意识。
    2. 善用 IDE,编辑器终归只是编辑器。想想那么多人宁愿花钱用 IDE 都不选免费的 vsc 就知道,差距还是不小的。
    a7dog
    a7dog
    OP
    Feb 19, 2021
    18
    @debuggerx 实际上只有 model 类的代码会这样,团队 4 人,实际开发中感觉没有什么不便。
    changz
    changz
    Feb 19, 2021 via Android
    19
    😏
    BeautifulSoap
    BeautifulSoap
    Feb 19, 2021
    20
    @a7dog VSC 也只是编辑器,基于文本的查找替换行,但是涉及到变量重命名这种场景的时候,是需要编辑器分析理解整个项目代码的,这种重量级的功能需求还是主流 IDE 才行
    sanqian
    sanqian
    Feb 19, 2021
    21
    这样真的丑。。
    klgd
    klgd
    Feb 19, 2021
    22
    @keepeye #4 两年? 是 10 年吧 php 的命名空间是 5.3 时引入的 现在都 8 了
    keepeye
    keepeye
    Feb 19, 2021
    23
    @klgd 我是说两年没写 php 看代码有点生疏,不是说没接触过命名空间
    k396656156
    k396656156
    Feb 19, 2021
    24
    看不懂你要这样写,你改起来不是很麻烦,改漏了不是出问题了
    Still4
    Still4
    Feb 19, 2021
    25
    太长了,不方便看,你举的例子里面只用了一次,如果调用几十次,第一眼看过去,你自己都会骂哪个傻*这么写的,都不知道精简下

    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
    guanhui07
    Feb 19, 2021
    26
    use ModelSpace\Staff as User
    konakona
    konakona
    Feb 19, 2021
    27
    那是因为你没有用好的 IDE ! phpstorm,你重构一个类的名称,那么所有项目底下使用到这个类的都会自己改。
    a7dog
    a7dog
    OP
    Feb 19, 2021
    28
    @Still4 这么长应该会用 use 的,我们实际用全 namespace 只在一个字母的 namespace 情况下
    lkxjlkejwr
    lkxjlkejwr
    Feb 19, 2021
    29
    不过现在 IDE 补全的时候都会自动导包吧... 就算是第二种写法 只要写个 User::find 后面选好补全后,IDE 不就自己会去 use 一个叫 User 的类进来。我用 vscode 是比较习惯手动选包,但是 phpstorm 这种早就把代码分析好了,应该直接就可以回车补全 + 导包 同时完成吧。
    chenzheyu
    chenzheyu
    Jun 3, 2021
    30
    @a7dog
    ```
    use ModelSpace\Staff as User,
    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5606 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 77ms · UTC 02:36 · PVG 10:36 · LAX 18:36 · JFK 21:36
    ♥ Do have faith in what you're doing.