Saya melihat kesalahan ini hanya setelah memutakhirkan lingkungan PHP saya menjadi PHP 5.4 dan selanjutnya. Kesalahan menunjuk ke baris kode ini:
Kesalahan:
Membuat objek default dari nilai kosong
Kode:
$res->success = false;
Apakah saya pertama-tama harus mendeklarasikan $res
objek saya ?
$res
?Jawaban:
Lingkungan baru Anda mungkin mengaktifkan
E_STRICT
peringatan untuk untuk versi PHP <= 5.3.x, atau cukup setel setidaknya dengan versi PHP> = 5.4. Kesalahan itu dipicu ketika sedang atau belum diinisialisasi:error_reporting
error_reporting
E_WARNING
$res
NULL
PHP akan melaporkan pesan kesalahan yang berbeda jika
$res
sudah diinisialisasi ke beberapa nilai tetapi bukan objek:Untuk mematuhi
E_STRICT
standar sebelum PHP 5.4, atauE_WARNING
tingkat kesalahan normal dalam PHP> = 5.4, dengan asumsi Anda mencoba membuat objek generik dan menetapkan propertisuccess
, Anda perlu mendeklarasikan$res
sebagai objekstdClass
di dalam namespace global:sumber
if (!isset($res)) $res = new stdClass();
. Jika tidak, kode ini bukan pengganti yang setara untuk pembuatan objek implisit "PHP lama".Pesan ini
E_STRICT
ditujukan untuk PHP <= 5.3. Sejak PHP 5.4, sayangnya diubah menjadiE_WARNING
. KarenaE_WARNING
pesan berguna, Anda tidak ingin menonaktifkannya sama sekali.Untuk menghilangkan peringatan ini, Anda harus menggunakan kode ini:
Ini adalah penggantian yang sepenuhnya setara . Ini memastikan hal yang persis sama yang dilakukan oleh PHP secara diam-diam - sayangnya dengan peringatan sekarang - pembuatan objek implisit. Anda harus selalu memeriksa apakah objek sudah ada, kecuali Anda benar-benar yakin itu tidak ada. Kode yang disediakan oleh Michael secara umum tidak bagus, karena dalam beberapa konteks objek kadang-kadang mungkin sudah didefinisikan di tempat yang sama dalam kode, tergantung pada keadaan.
sumber
Undefined variable: res
.Secara sederhana,
Atau Anda dapat membuat instance kelas dengan:
dan isi nilai dengan:
Info lebih lanjut: https://www.php.net/manual/en/language.types.object.php#language.types.object.casting
sumber
$this->route->uri = new stdClass();
tidak bekerja untuk saya, saya masih punya peringatan. Catatan:$this->route
ada.Jika Anda memasukkan karakter "@" di awal baris maka PHP tidak menampilkan peringatan / pemberitahuan untuk baris ini. Sebagai contoh:
Untuk mencegah peringatan ini untuk baris ini, Anda harus meletakkan karakter "@" di awal baris seperti ini:
Saya menggunakan trik ini saat berkembang. Saya tidak suka menonaktifkan semua pesan peringatan karena jika Anda tidak menangani peringatan dengan benar maka mereka akan menjadi kesalahan besar di masa depan.
sumber
Coba ini jika Anda memiliki larik dan tambahkan objek ke dalamnya.
Ini mengirimkan ARRAY of Objects untuk digunakan nanti ~!
sumber
Coba ini:
sumber
E_STRICT
kesalahan kecuali kesalahan, termasuk menekan pesan untuk kesalahan fatal. Itu bukan saran yang masuk akal untuk menyelesaikan peringatan khusus ini, dan terlebih lagi adalah sesuatu yang hampir tidak pernah ingin Anda lakukan. Mengapa 5 orang memilih ini, saya tidak tahu.ini_set('error_reporting', -1);
saat debugging, tetapi jangan gunakan hal di atas, seperti sebelumnya.Saya memiliki masalah yang sama dan ini tampaknya menyelesaikan masalah. Anda hanya perlu menginisialisasi objek $ res ke sebuah kelas. Misalkan di sini nama kelasnya adalah tes.
sumber
Ini adalah peringatan yang saya hadapi di PHP 7, perbaikan yang mudah untuk ini adalah dengan menginisialisasi variabel sebelum menggunakannya
Setelah Anda menginternalisasi itu maka Anda dapat menggunakannya untuk objek
sumber
Masalah ini disebabkan karena Anda menugaskan ke instance objek yang tidak dimulai. Untuk misalnya:
Kasus Anda:
Larutan:
sumber
Cara mudah untuk mendapatkan kesalahan ini adalah dengan mengetik (a) di bawah ini, artinya mengetik (b)
(Sebuah)
$this->my->variable
(b)
$this->my_variable
Sepele, tetapi sangat mudah diabaikan dan sulit dikenali jika Anda tidak mencarinya.
sumber
_
dan->
Anda mungkin perlu memeriksa apakah variabel dideklarasikan dan memiliki tipe yang benar.
Lihat kelas anonim PHP .
sumber
Saya punya masalah yang sama ketika mencoba menambahkan variabel ke objek yang dikembalikan dari API. Saya iterasi melalui data dengan loop foreach.
Ini melemparkan "Membuat objek default dari nilai kosong" Pengecualian di Laravel.
Saya memperbaikinya dengan perubahan yang sangat kecil.
Dengan hanya membuat $ data referensi.
Saya harap itu membantu seseorang dan itu mengganggu saya!
sumber
Pertama-tama Anda harus membuat objek $ res = new \ stdClass ();
kemudian tetapkan objek dengan kunci dan nilai thay $ res-> success = false;
sumber
thay
.) Di mana Anda ingin jeda baris setelah beberapa konten, tambahkan dua spasi kosong ke konten garis yang terlihat sebelum jeda.tidak Anda tidak .. itu akan membuatnya ketika Anda menambahkan nilai keberhasilan ke objek. kelas default diwarisi jika Anda tidak menentukan satu.
sumber
Coba gunakan:
sumber
Saya menempatkan yang berikut ini di bagian atas file PHP yang bermasalah dan kesalahan tidak lagi ditampilkan:
sumber