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 类实例化。使用或不使用括号? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章