PHP类实例化.使用或不使用括号?

Atl*_*tli 70 php oop class instantiation

我一直认为 - 在没有构造函数参数的情况下 - 括号(花括号)在创建类实例时遵循类名,是可选的,并且您可以根据自己的想法包含或排除它们.

这两个陈述是平等的:

$foo = new bar;
$foo = new bar();
Run Code Online (Sandbox Code Playgroud)

我对吗?或者对我不知道的括号有一些意义吗?

我知道这听起来像一个RTM问题,但我一直在寻找(包括整个PHP OOP部分),我似乎无法找到一个直接的答案.

Gor*_*don 55

它们是等价的.如果您没有按照任何代码约定进行编码,请使用您更喜欢的代码.就个人而言,我喜欢把它留下来,因为它对我来说真的很混乱.

  • ..而且,最终部分看起来像一个傻笑的猴子(); laaaa-LA (21认同)
  • 我不会遗漏它们,因为它仍然是一个*函数调用* - 对构造函数方法的调用.当你调用其他不需要参数的函数或方法时,也不允许省略`()`.那么我为什么要用构造函数来做呢?`new Foo()`而不是`new Foo`对于可读性恕我直言更好. (6认同)
  • 我仍然认为保留括号更常规!(:对来自C#或Java的非C/C++背景朋友更友好. (5认同)
  • 同意.如果构造函数没有采用任何参数,我也将它们遗漏 (2认同)

hen*_*ght 5

$foo = new bar()$foo = new bar如果您将参数传递给构造函数,将会很有用。例如:

class bar {

    public $user_id;

    function __construct( $user_id ) {
        $this->user_id = $user_id
    }
}
Run Code Online (Sandbox Code Playgroud)

——

$foo = new bar( $user_id );
Run Code Online (Sandbox Code Playgroud)

除此之外,正如在接受的答案中已经提到的,没有区别。