簡體   English   中英

如何為構造函數指定 void 返回類型

[英]How to specify the void return type for a constructor

為了保持一致性,我指定了自 PHP 7.1 以來的返回類型,適用於所有方法,包括像__toString這樣的魔術方法,甚至當隱式返回類型為void時,如__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

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)
 */

這讓我感到困惑,因為其他預定義的方法確實支持顯式返回類型。 我在docsRFC中找不到任何關於這種偏差的信息。

如何為構造函數和析構函數指定返回類型void 如果在 PHP 7 中無法實現,那么在 PHP 8 中是否可以實現?

PHP5 中引入構造函數析構函數的概念。 他們不明確返回任何東西。 它們沒有任何返回類型。

正如構造函數的定義所言,它用於創建 object,它是 class 的一個實例。 它用於初始化 class 的 object,因為構造函數聲明看起來就像沒有返回類型的方法聲明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM