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
Lepaskan: 2024-11-20 04:52:02
asal
358 orang telah melayarinya

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; }
}
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan