Ralat "Membuat objek lalai daripada nilai kosong" PHP sering menjelma apabila anda mengakses sifat yang kelihatan tidak ditetapkan pembolehubah. Ralat ini adalah hasil daripada pengendalian ralat ketat PHP dalam versi 5.4 dan seterusnya.
Ralat ini dicetuskan apabila PHP cuba untuk memulakan objek lalai untuk pembolehubah yang belum menjadi objek atau ditetapkan secara eksplisit kepada NULL. Contohnya:
$res = NULL; $res->success = false;
Dalam PHP 5.3 dan lebih awal, kod ini tidak akan menghasilkan sebarang ralat. Walau bagaimanapun, dalam PHP versi 5.4 dan ke atas, amaran E_STRICT (atau E_WARNINGs jika anda mempunyai error_reporting ditetapkan kepada sekurang-kurangnya tahap ini) didayakan, menyebabkan ralat "Mencipta objek lalai daripada nilai kosong".
Adakah $res Perlu Diisytiharkan Dahulu?
Tidak, mengisytiharkan $res sebagai objek bukanlah perlu. Walau bagaimanapun, anda mesti memastikan bahawa $res ialah objek sebelum mengakses sifatnya. Untuk melakukan ini, anda boleh sama ada memulakannya sebagai objek kelas tertentu atau menggunakan objek stdClass generik:
// Initialize as a specific class $res = new MyClassName(); // Initialize as a generic object $res = new \stdClass();
Setelah $res ialah objek, anda boleh mengakses dan mengubah suai sifatnya tanpa menemui " Mencipta objek lalai daripada ralat nilai kosong".
$res->success = false; // No error
Atas ialah kandungan terperinci Mengapa PHP Melemparkan Ralat 'Membuat objek lalai daripada nilai kosong'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!