whatisnew
V2EX  ›  PHP

纠结 php use

  •  
  •   whatisnew · Apr 10, 2016 · 2710 views
    This topic created in 3684 days ago, the information mentioned may be changed or developed.

    可以这样用:

    use vendor\Path\Class;
    // 然后方法里用:
    (new Class())->method()
    

    也可以这样用:

    // 不用 use, 直接在方法里写:
    (new vendor\Path\Class())->method()
    

    其中:

    // new 可以这样,带括号
    (new vendor\Path\Class())->method()
    // 也可以这样,不带括号:
    (new vendor\Path\Class)->method()
    

    操。。。我蹦溃了,到底要咋样???

    10 replies    2016-04-11 00:25:53 +08:00
    sjtlqy
        1
    sjtlqy  
       Apr 10, 2016
    use 还是建议放在头部,函数里面用 use , tmd 挖坑
    magicdawn
        2
    magicdawn  
       Apr 10, 2016
    话说最好的语言不是有 psr 规范么,里面有规定 use
    Lucups
        3
    Lucups  
       Apr 10, 2016
    楼主纠结癌晚期,鉴定完毕。
    feiyuanqiu
        4
    feiyuanqiu  
       Apr 10, 2016 via iPhone
    没搞懂有什么问题, namespace 就相当于为类名加了个前缀, use 让你可以偷懒少打一串字
    至于 new 的时候的括号问题,选择一种自己喜欢的 code style 并坚持用就好了,结果又没有什么差别
    lianyue
        5
    lianyue  
       Apr 10, 2016 via iPhone
    你还不如在加个
    (new \vendor\Path\Class())->method()
    raincious
        6
    raincious  
       Apr 10, 2016
    建议楼主找个 IDE 比如 PHP Storm ,瞬间解除纠结模式(因为会提示你不要使用类全名)。
    orvice
        7
    orvice  
       Apr 10, 2016
    写头部吧
    xiaonianji
        8
    xiaonianji  
       Apr 10, 2016
    greatonce
        9
    greatonce  
       Apr 11, 2016
    (new vendor\Path\Class())->method()
    1. 这样写 Class()一般是构造方法需要参数的时候用于在里面传参数的, 而 new 在括号里面表明这是一个实例,所以可以调用 method ,如果是构造方法,是不会返回实例的。

    (new vendor\Path\Class)->method()
    2. 这种写法可以创建一个 Class 的实例,然后调用 method ,同样 new 是在括号里面,所以 new 完后是一个实例,这样的实例无法传参给构造方法。


    其实这两种没有什么太难理解的,一个是 Class() 另一个是 Class 都是在()括号里面 new ,然后得到一个实例化,多练习就可以了。
    lazypu
        10
    lazypu  
       Apr 11, 2016
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2641 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 16:02 · PVG 00:02 · LAX 09:02 · JFK 12:02
    ♥ Do have faith in what you're doing.