为了保持一致性,我从PHP 7.1开始为所有方法指定了return types,包括__toString
之类的魔术方法,甚至当隐式返回类型为void
时也与{{3 }}:
class a {
function __toString() : string {}
function __unserialize ( array $data ) : void {}
function __wakeup() : void {}
}
当我对__unserialize()
尝试相同时,如下所示:
class a {
function __construct() : void {}
function __destruct() : void {}
function __clone() : void {}
}
PHP产生Fatal error
s:
Constructor a::__construct() cannot declare a return type
Destructor a::__destruct() cannot declare a return type
Clone method a::__clone() cannot declare a return type
我现在唯一能做的就是在这样的文档块中指定隐式返回类型:
/**
* @return void (implicit)
*/
这使我感到困惑,因为其他预定义方法 do 支持显式返回类型。在constructors and destructors或the docs中找不到关于此偏差的任何信息。
如何为构造函数和析构函数指定返回类型void
?如果在PHP 7中无法实现,在PHP 8中是否可以实现?
答案 0 :(得分:1)
构造函数和析构函数的概念在PHP5中为introduced。他们没有明确返回任何内容。它们没有任何返回类型。
随着构造器的定义的发展,它被用于创建作为类实例的对象。用于初始化类的对象,因为构造函数声明就像没有返回类型的方法声明一样。