簡體   English   中英

PHP類聲明

[英]PHP class declaration

有沒有辦法在php中將顯式類型設置為對象字段? 像這樣的東西

class House{
       private Roof $roof
}

不,沒有。 PHP變量可以始終為任何類型。 但是你可以在setter中強制執行一個類型:

public function setRoof(Roof $roof) {
  $this->roof = $roof;
}

您不能使用PHP代碼聲明對象字段的類型。

但您可以在docblock注釋中添加類型提示

class House{
       /**
        * @var Roof
        */
       private $roof
}

這仍然不會使代碼強制執行類型,但某些IDE工具會理解docblock,並且如果您使用此變量而不符合類型提示,則可能會發出警告。

你正在尋找PHP的類型提示。 它適用於函數/方法調用。 這是手冊:

http://php.net/manual/en/language.oop5.typehinting.php

為什么不直接將$ roof分配給新的Roof()?

在使用該成員之前,您還可以使用以下內容

if (!$this->roof instanceof Roof) {

    throw new Exception('$this->roof is not an instance of Roof');
}

暫無
暫無

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

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