隨著PHP 7.4 中屬性類型提示的引入,為所有屬性,以確保其聲明的類型得到尊重。沒有分配值的未定義屬性無法匹配任何聲明的類型並觸發錯誤訊息:「初始化之前不得存取類型化屬性」。
例如,請考慮以下程式碼:
class Foo { private string $val; public function __construct(int $id) { $this->id = $id; } public function getVal(): string { return $this->val; } }
建構 Foo 後存取 $val 會導致錯誤,因為其型別尚未定義 (undefined !== null)。
要解決此問題,請在建構或為其設定預設值:
class Foo { private string $val = null; // default null value public function __construct(int $id) { $this->id = $id; } }
現在,所有屬性都有有效值,從而消除了錯誤。
當實體屬性依賴資料庫值(例如自動產生的 ID 或時間戳記)時,也會發生此問題。對於自動產生的 ID,將它們宣告為可空:
private ?int $id = null;
對於所有其他 ID,選擇與其類型相符的適當預設值。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3