隨著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 會導致錯誤,因為它的類型尚未定義(未定義!== null)。
要解決此問題,請在構造期間為所有屬性賦值或為它們設定預設值:
class Foo { private string $val = null; // default null value public function __construct(int $id) { $this->id = $id; } }
現在,所有屬性都有有效值,消除了錯誤。
當實體屬性依賴資料庫值(例如 auto)時,也會出現此問題- 產生的 ID 或時間戳記。對於自動產生的 ID,將它們宣告為可空:
private ?int $id = null;
對於所有其他 ID,選擇與其類型相符的適當預設值。
以上是如何修復 PHP 中的「初始化之前不得存取類型化屬性」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!