首頁 > 後端開發 > php教程 > 如何修復 PHP 中的「初始化之前不得存取類型化屬性」錯誤?

如何修復 PHP 中的「初始化之前不得存取類型化屬性」錯誤?

DDD
發布: 2024-11-20 04:52:02
原創
361 人瀏覽過

How to Fix the

理解「初始化之前不得存取類型化屬性」錯誤

隨著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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板