Selama di stackoverflow, saya melihat masalah ini muncul sepanjang waktu:
- E_NOTICE? == E_DEBUG, menghindari isset () dan @ dengan error_handler yang lebih canggih
- Bagaimana cara mengatur PHP agar tidak memeriksa indeks undefind untuk $ _GET ketika E_NOTICE aktif?
- Cara menghentikan PHP dari mencatat kesalahan Pemberitahuan PHP
- Bagaimana cara mematikan Pemberitahuan PHP 5.3 seperti itu?
Bahkan Pekka (yang menawarkan banyak saran PHP yang solid) telah menabrak E_NOTICE
monster yang ditakuti dan berharap untuk solusi yang lebih baik daripada menggunakan isset()
: isset () dan empty () membuat kode jelek
Secara pribadi, saya menggunakan isset()
dan empty()
di banyak tempat untuk mengelola aliran aplikasi saya. Sebagai contoh:
public function do_something($optional_parameter = NULL) {
if (!empty($optional_parameter)) {
// do optional stuff with the contents of $optional_parameter
}
// do mandatory stuff
}
Bahkan cuplikan sederhana seperti ini:
if (!isset($_REQUEST['form_var'])) {
// something's missing, do something about it.
}
tampaknya sangat logis bagi saya. Itu tidak terlihat seperti mengasapi, sepertinya kode stabil. Tetapi banyak pengembang menjalankan aplikasi mereka dengan E_NOTICE
diaktifkan, menemukan banyak pemberitahuan "indeks array tidak diinisialisasi" yang membuat frustrasi, dan kemudian meringis pada prospek memeriksa variabel yang ditentukan dan "membuang sampah sembarangan" dengan kode mereka isset()
.
Saya menganggap bahasa lain menangani berbagai hal secara berbeda. Berbicara dari pengalaman, JavaScript tidak sesopan PHP. Variabel yang tidak terdefinisi biasanya akan menghentikan eksekusi skrip. Juga, (berbicara dari pengalaman ), saya yakin bahasa seperti C / C ++ hanya akan menolak untuk dikompilasi.
Jadi, apakah pengembang PHP hanya malas? (tidak berbicara tentang Anda, Pekka, saya tahu Anda refactoring aplikasi lama.) Atau apakah bahasa lain menangani variabel tidak terdefinisi lebih anggun daripada mengharuskan programmer untuk memeriksa terlebih dahulu apakah mereka didefinisikan?
(Saya tahu ada E_NOTICE
pesan lain selain variabel yang tidak terdefinisi, tetapi yang tampaknya menjadi yang paling menyebabkan kesulitan)
Tambahan
Dari jawaban sejauh ini, saya bukan satu-satunya yang berpikir isset()
bukan kode mengasapi. Jadi, saya bertanya-tanya sekarang, apakah ada masalah dengan programmer dalam bahasa lain yang menggemakan yang ini? Atau apakah ini semata-mata masalah budaya PHP?