为了保持一致性,我从 PHP 7.1 开始为所有方法指定返回类型,包括魔术方法,__toString
甚至当隐式返回类型void
类似于 with 时__unserialize()
:
class a {
function __toString() : string {}
function __unserialize ( array $data ) : void {}
function __wakeup() : void {}
}
当我对构造函数和析构函数尝试相同的操作时,如下所示:
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
我现在唯一能做的就是在 docblock 中指定隐式返回类型,如下所示:
/**
* @return void (implicit)
*/
这让我感到困惑,因为其他预定义的方法确实支持显式返回类型。我在docs或RFC中找不到任何关于这种偏差的信息。
如何指定void
构造函数和析构函数的返回类型?如果这在 PHP 7 中是不可能的,那么它在 PHP 8 中会成为可能吗?