PHP 中新 class 声明的语法

Syntax for new class declarations in PHP

我继承了一个 php 项目,该项目之前分配给了另一家开发公司,我经常看到非常奇怪的代码实现,我以前从未见过,我认为它们可能是错误的。也就是说,它们无处不在,服务器日志不会抱怨它们或发出警告。 error_reporting 可能在某处被关闭了。

例如,我看到很多 class 这样的声明:

$registration = new EventRegistration;

这对我来说很奇怪,因为我只见过 class 实例化使用 new 完成:

$registration = new EventRegistration();

有人可以澄清这是否不正确/不是最佳实践/可以通过吗?

我认为这只是一个语法错误,可以编译,但在技术上是错误的。类似于人们使用 $array[key] 而不是 $array['key'] 这样的数组语法。对吗?

谢谢。

使用 new 关键字创建一个新对象,如果该对象不需要任何参数(如 __construct() 方法中定义的那样),则完全可以省略 ().

class foo{
    function __construct(){}
} // valid

class bar{
    function __construct($arg = null){}
} // valid

class foobar{
    function __construct($arg){}
} // not valid

在这种情况下,如果您不传递任何参数,只有 foobar 会触发警告。我会说这是一个偏好问题。

但是对于 $array[key] 会说 key 是一个常量并且可能会触发警告。