[英]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)
*/
這讓我感到困惑,因為其他預定義的方法確實支持顯式返回類型。 我在docs或RFC中找不到任何關於這種偏差的信息。
如何為構造函數和析構函數指定返回類型void
? 如果在 PHP 7 中無法實現,那么在 PHP 8 中是否可以實現?
PHP5 中引入了構造函數和析構函數的概念。 他們不明確返回任何東西。 它們沒有任何返回類型。
正如構造函數的定義所言,它用於創建 object,它是 class 的一個實例。 它用於初始化 class 的 object,因為構造函數聲明看起來就像沒有返回類型的方法聲明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.