V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ericgui
V2EX  ›  PHP

到底是 new DOMDocument 还是 new DOMDocument() ?

  •  
  •   ericgui · 2017-01-02 16:33:19 +08:00 · 3005 次点击
    这是一个创建于 2680 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我在看 PHP COOKBOOK 3rd
    里面在 388 页,有个$dom = new DOMDocument;
    在 420 页,又出现了$doc = new DOMDocument();
    我又搜索了半天,这两个分别出现多次。

    所以我就郁闷了,这俩到底啥区别?
    什么时候用那个括号,什么时候不用?

    哪位高人能指点一下?
    谢谢
    13 条回复    2017-01-04 13:07:23 +08:00
    greatonce
        1
    greatonce  
       2017-01-02 16:45:52 +08:00   ❤️ 1
    构造函数 __construct() 需要传入参数的时候就用(), 不需要传入参数的时候可有可无
    ericgui
        2
    ericgui  
    OP
       2017-01-02 16:50:10 +08:00
    @greatonce 豁然开朗啊,谢谢!!
    ericgui
        3
    ericgui  
    OP
       2017-01-02 16:52:02 +08:00
    @greatonce 那这样说,实例化其他的 Class 的时候,也是这样的规则喽?我也见过其他的 new Person() 和 new Person 。不传入参数的话,括号可有可无,是嘛?
    greatonce
        4
    greatonce  
       2017-01-02 17:22:10 +08:00
    只要需要传参数都是需要带括号的,并且传入参数 例如 __construct($param1) 就需要 new ClassName('参数')

    __construct($param1='') 或 __construct() 则 new 的时候带不带括号都可以。

    看样子楼主是刚学 PHP ,加油吧
    ericgui
        5
    ericgui  
    OP
       2017-01-02 17:25:16 +08:00
    @greatonce 确实刚学。有点晕。谢谢大侠!
    iyaozhen
        6
    iyaozhen  
       2017-01-02 18:14:10 +08:00 via Android
    楼上已经说得差不多了。不过还有一个,代码规范。一般的话不管是否需要参数都 new class()
    ericgui
        7
    ericgui  
    OP
       2017-01-02 18:20:52 +08:00
    @iyaozhen 那看来 PHP Cookbook 的代码规范也不咋滴。经常不加括号。
    jininij
        8
    jininij  
       2017-01-02 18:24:42 +08:00 via Android
    倒不是加不加括号的问题,别一会加一会不加。 space 和 tab ,左大括号放行后还是下一行。。。等等等等,这些都是同一个问题。
    ericgui
        9
    ericgui  
    OP
       2017-01-02 18:33:46 +08:00
    @jininij 没参数的情况下,这本书就是一会加括号一会不加括号。有参数的那就没得说了,肯定加。
    techmoe
        10
    techmoe  
       2017-01-02 22:17:08 +08:00 via Android
    不加括号总感觉不清真
    ericgui
        11
    ericgui  
    OP
       2017-01-02 22:30:51 +08:00
    @techmoe 是,我第一次发现竟然可以不加括号,就觉得很震惊。
    mingyun
        12
    mingyun  
       2017-01-02 23:33:05 +08:00
    >>> new stdclass==new stdclass()
    => true
    ericgui
        13
    ericgui  
    OP
       2017-01-04 13:07:23 +08:00
    @mingyun 谢谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1171 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:38 · PVG 01:38 · LAX 10:38 · JFK 13:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.