PHP 类实例化。使用或不使用括号? [关闭]

Posted

技术标签:

【中文标题】PHP 类实例化。使用或不使用括号? [关闭]【英文标题】:PHP class instantiation. To use or not to use the parentheses? [closed] 【发布时间】:2010-12-29 02:15:52 【问题描述】:

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

这两个陈述是相等的:

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

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

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

【问题讨论】:

我知道这将是一个旧答案,但基于 PSR12 编码风格:php-fig.org/psr/psr-12, "当实例化一个新类时,必须始终存在括号即使没有传递给构造函数的参数。" 【参考方案1】:

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

【讨论】:

同意。如果构造函数不带任何参数,我也将它们排除在外 谢谢。我希望是这样的。 - 我个人喜欢总是包括他们。我的 Java/C# 时代的坏习惯 :) ..另外,结尾部分看起来像一个傻笑的唱歌猴子();啦啦啦 我仍然认为保留括号更传统! (: 对来自 C# 或 Java 的非 C/C++ 背景朋友更友好。 我不会忽略它们,因为它仍然是一个 函数调用 - 对构造函数方法的调用。也不允许在调用时省略 ()其他不需要参数的函数或方法。那么我为什么要使用构造函数来做到这一点呢? new Foo() 而不是 new Foo 更便于阅读恕我直言。【参考方案2】:

如果您将参数传递给构造函数,$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 );

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

【讨论】:

以上是关于PHP 类实例化。使用或不使用括号? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

同一指令中的类实例化和方法? [关闭]

self,和类实例化加不加括号的理解

可以使用类方法中的类名属性(在一行代码中)实例化 PHP 实例吗?

PHP能在类中实例化一个类吗

PHP面相对象:声明类和实例化类

何时使用静态类与实例化类