它是很好的做法,這樣的性質:是否可以擁有財產,可以是或虛假或數組或空
/**
* @var false|array|null
*/
protected $mockMethods = false;
該屬性可以是或false
或array
或null
。
或者也許更好只有一個數據類型的內部類屬性?
它是很好的做法,這樣的性質:是否可以擁有財產,可以是或虛假或數組或空
/**
* @var false|array|null
*/
protected $mockMethods = false;
該屬性可以是或false
或array
或null
。
或者也許更好只有一個數據類型的內部類屬性?
作爲一般規則,我會說「不」。主要是因爲你可能最終會在代碼中添加對變量類型的附加類型檢查。這就是說:我已經看到它做了很多次,包括函數中PHP的返回值。所以我不能說它是'禁區'或任何東西!
有很多函數 - 包括內置函數 - 返回字符串或數組,false
或null
。
在這些情況下,原因是該函數的主要目的是返回一個字符串或數組。如果操作不適用,通常會返回false
- 例如,如果您針對不包含要查找的子字符串的字符串調用strpos()
,而在某處發生錯誤時將專門返回null
。
但你的問題是關於變量,屬性更精確。雖然用於恢復可返回三種不同類型的函數(取決於情況)的返回的變量可以被指定爲這些類型中的任何一種,但是存儲該不確定的信息是不明智的。
當一個值來自可以返回幾種不同類型的函數時,您必須在使用它之前對其進行測試。您越早測試並確認其性質,您就可以越早採取相應措施。
如果您只是將該返回值指定給您的屬性並在使用它時測試其類型,則意味着您必須在每次需要時測試它。此外,如果發生錯誤,則將一個無用的null
存儲在屬性中,並且只在需要該值時檢測錯誤。
製作程序的一個好方法是根據它們將包含的內容以及對它做些什麼來設計變量。它使你的代碼更加明顯,並可以幫助你預防錯誤。
在存儲它們之前檢查函數返回的值的類型和最終值的內容,以便您可以站在存儲的值上。
要與現實生活平行的,從功能屬性指派值,而不檢查和過濾他們就像只要他們與您聯繫,只有在面試他們僱用的人 - 因此每一次 - 你需要把他們在一項任務上。不用說它繁瑣,雜亂,容易出錯。