whatisnew
V2EX  ›  PHP

纠结 php use

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

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


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