如何为构造函数指定void返回类型

时间:2020-05-23 09:20:06

标签: php oop php-7 php-7.1 php-8

为了保持一致性,我从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 destructorsthe docs中找不到关于此偏差的任何信息。

如何为构造函数和析构函数指定返回类型void?如果在PHP 7中无法实现,在PHP 8中是否可以实现?

1 个答案:

答案 0 :(得分:1)

构造函数析构函数的概念在PHP5中为introduced。他们没有明确返回任何内容。它们没有任何返回类型。

随着构造器的定义的发展,它被用于创建作为类实例的对象。用于初始化类的对象,因为构造函数声明就像没有返回类型的方法声明一样。