Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Membetulkan Ralat \'Harta Ditaip Tidak Mesti Diakses Sebelum Permulaan\' dalam PHP?

Bagaimana untuk Membetulkan Ralat \'Harta Ditaip Tidak Mesti Diakses Sebelum Permulaan\' dalam PHP?

DDD
DDDasal
2024-11-20 04:52:02368semak imbas

How to Fix the

Memahami Ralat "Harta Yang Ditaip Tidak Mesti Diakses Sebelum Permulaan"

Dengan pengenalan pembayang jenis hartanah dalam PHP 7.4, adalah penting untuk menetapkan nilai yang sah kepada semua hartanah untuk memastikan jenis yang diisytiharkan dihormati. Sifat yang tidak ditentukan, tanpa nilai yang ditetapkan, gagal padan dengan mana-mana jenis yang diisytiharkan dan mencetuskan mesej ralat: "Harta yang ditaip tidak boleh diakses sebelum pemulaan".

Sebagai contoh, pertimbangkan kod di bawah:

class Foo {
    private string $val;

    public function __construct(int $id) {
        $this->id = $id;
    }

    public function getVal(): string { return $this->val; }
}

Mengakses $val selepas membina Foo akan mengakibatkan ralat, kerana jenisnya belum ditentukan (undefined !== null).

Untuk menyelesaikan masalah ini, tetapkan nilai kepada semua sifat semasa pembinaan atau tetapkan nilai lalai untuknya:

class Foo {
    private string $val = null;  // default null value

    public function __construct(int $id) {
        $this->id = $id;
    }
}

Kini, semua sifat mempunyai nilai yang sah, menghapuskan ralat.

Isu ini juga boleh timbul apabila bergantung pada nilai pangkalan data untuk sifat entiti, seperti ID atau cap masa yang dijana secara automatik. Untuk ID yang dijana secara automatik, isytiharkannya sebagai batal:

private ?int $id = null;

Untuk semua yang lain, pilih nilai lalai yang sesuai yang sepadan dengan jenisnya.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Harta Ditaip Tidak Mesti Diakses Sebelum Permulaan' dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn