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!