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
是一个常量并且可能会触发警告。
我继承了一个 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
是一个常量并且可能会触发警告。