Saya sedang menulis aplikasi php untuk mengakses database MySQL, dan di tutorial, dikatakan sesuatu dari formulir
mysql_connect($host, $user, $pass) or die("could not connect");
Bagaimana PHP mengetahui bahwa fungsinya gagal sehingga menjalankan bagian die? Saya kira saya bertanya bagaimana "atau" bagian itu bekerja. Saya tidak berpikir saya pernah melihatnya sebelumnya.
php
mysql
exception-handling
conditional
chustar
sumber
sumber
Jawaban:
Jika pernyataan pertama kembali
true
, maka seluruh pernyataan harustrue
oleh karena itu bagian kedua tidak pernah dijalankan.Sebagai contoh:
Oleh karena itu, jika kueri Anda tidak berhasil, itu akan mengevaluasi
die()
pernyataan dan mengakhiri skrip.sumber
with
pernyataan python , padahal sebenarnya hanya ekspresi boolean ... Saya pikir perhatian ekstra harus dilakukan saat menggunakan ekspresi ini jika Anda diharapkan melakukan pembersihan jika terjadi kesalahan. Tolong, perbaiki saya jika saya salah, tetapi jika Anda melakukannyafunc_call($file) or die();
dan fungsinya gagal, maka file dibiarkan terbuka ketika skrip mati.or
dalam situasi di manaif
bisa bekerja?PHP
or
bekerja seperti C||
(yang notabene juga didukung oleh PHP -or
hanya terlihat lebih bagus dan memiliki prioritas operator yang berbeda - lihat halaman ini ).Ini dikenal sebagai operator hubung singkat karena akan melewatkan evaluasi apa pun setelah memiliki cukup informasi untuk menentukan nilai akhir.
Dalam contoh Anda, jika
mysql_connect()
mengembalikan TRUE, maka PHP sudah tahu bahwa seluruh pernyataan akan dievaluasi ke TRUE tidak peduli apa yangdie()
dievaluasi, dan karenanyadie()
tidak dievaluasi.Jika
mysql_connect()
mengembalikan FALSE, PHP tidak tahu apakah seluruh pernyataan akan dievaluasi ke TRUE atau FALSE sehingga berlanjut dan mencoba untuk mengevaluasidie()
- mengakhiri skrip dalam proses.Itu hanya trik bagus yang memanfaatkan cara
or
kerjanya.sumber
Ini bekerja seperti yang dijelaskan orang lain.
Di PHP, jangan gunakan "die", karena TIDAK memunculkan pengecualian (seperti yang dilakukan di Perl). Sebaliknya, berikan pengecualian dengan benar dengan cara biasa.
die tidak dapat ditangkap dalam PHP, dan tidak mencatat - sebaliknya ia mencetak pesan dengan tidak benar dan segera menutup skrip tanpa memberi tahu siapa pun atau memberi Anda kesempatan untuk merekam acara, coba lagi, dll.
sumber
sumber