72

我一直假设 - 在没有构造函数参数的情况下 - 创建类实例时,括号(大括号)跟在类名之后,是可选的,并且您可以根据自己的个人心血来潮包含或排除它们。

这两个陈述是平等的:

$foo = new bar;
$foo = new bar();

我对吗?还是我不知道的括号有什么意义?

我知道这听起来像是一个 RTM 问题,但我已经搜索了一段时间(包括整个 PHP OOP 部分),但我似乎找不到一个直接的答案。

4

2 回答 2

56

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

于 2009-12-22T12:07:16.473 回答
5

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

class bar {

    public $user_id;

    function __construct( $user_id ) {
        $this->user_id = $user_id
    }
}

-

$foo = new bar( $user_id );

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

于 2015-02-25T00:21:44.560 回答