」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何修復 PHP 中的「初始化之前不得存取類型化屬性」錯誤?

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

發佈於2024-12-23
瀏覽:980

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 會導致錯誤,因為其型別尚未定義 (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