Jawaban:
Tidak ada perbedaan - mereka sama.
Manual PHP untuk exit
:
Catatan: Konstruk bahasa ini setara dengan
die()
.
Manual PHP untuk die
:
Konstruk bahasa ini setara dengan
exit()
.
die
untuk berhenti terkait kesalahan dan exit
untuk semua skenario lainnya. Sepertinya mengalir lebih baik saat membaca kode.
die
jauh lebih cepat untuk menulis daripada exit
... Saya mulai menggunakan exit
karena lebih mudah dibaca oleh programmer non-PHP, tetapi die
hanya lebih cepat untuk mengetik ketika Anda berada di cepat. Juga, omong-omong saya mengetik, saya tidak perlu mengubah posisi tangan untuk menulis die
.
Perbedaan antara die()
dan exit()
dalam PHP adalah asalnya .
exit()
adalah dari exit()
dalam C .die()
berasal dari die
dalam Perl .die()
dan exit()
merupakan fungsi yang setara.
Manual PHP untuk die
:
Konstruk bahasa ini setara dengan
exit()
.
Manual PHP untuk exit
:
Catatan: Konstruk bahasa ini setara dengan
die()
.
Manual PHP untuk Daftar Alias Fungsi :
die()
dan exit()
yang berbeda dalam bahasa lain tetapi dalam PHP mereka identik.
Dari kata-kata kasar lain PHP :
... Sebagai pembuat kode C dan Perl, saya siap menjawab, "Mengapa, keluar () hanya menebus program dengan status keluar numerik, sementara die () mencetak pesan kesalahan ke stderr dan keluar dengan status EXIT_FAILURE. " Tapi kemudian saya ingat kita berada di tanah sintaksis PHP.
Di PHP, exit () dan die () identik.
Para desainer jelas berpikir "Hmm, mari kita meminjam exit () dari C. Dan orang-orang Perl mungkin akan menyukainya jika kita mengambil die () seperti dari Perl . Ups! Kami memiliki dua fungsi keluar sekarang! Mari kita buat sehingga mereka berdua dapat mengambil string atau integer sebagai argumen dan membuatnya identik! "
Hasil akhirnya adalah bahwa ini tidak benar-benar membuat segalanya "lebih mudah", hanya lebih membingungkan. C dan Perl coders akan terus menggunakan exit () untuk melemparkan nilai keluar integer saja, dan mati () untuk melemparkan pesan kesalahan dan keluar dengan kegagalan. Pemula dan orang-orang yang menggunakan PHP sebagai bahasa pertama mungkin akan bertanya-tanya "umm, dua fungsi keluar, yang mana yang harus saya gunakan?" Manual tidak menjelaskan mengapa ada exit () dan die ().
Secara umum, PHP memiliki banyak redundansi aneh seperti ini - ia mencoba bersikap ramah kepada orang-orang yang berasal dari latar belakang bahasa yang berbeda, tetapi saat melakukannya, itu menciptakan redundansi yang membingungkan.
exit()
tidak menutup koneksi sementara die()
, tampaknya relevan.
Seperti yang dinyatakan sebelumnya, kedua perintah ini menghasilkan token parser yang sama.
TAPI
Ada perbedaan kecil, dan itu adalah berapa lama parser untuk mengembalikan token.
Saya belum mempelajari parser PHP, tetapi jika itu adalah daftar panjang fungsi yang dimulai dengan "d", dan daftar yang lebih pendek dimulai dengan "e", maka harus ada penalti waktu mencari nama fungsi untuk fungsi yang dimulai dengan " e ". Dan mungkin ada perbedaan lain karena cara seluruh nama fungsi diperiksa.
Saya ragu itu akan terukur kecuali Anda memiliki lingkungan "sempurna" yang didedikasikan untuk parsing PHP, dan banyak permintaan dengan parameter berbeda. Tetapi harus ada perbedaan, lagipula, PHP adalah bahasa yang diartikan.
Manual PHP pada die :
die - Setara dengan keluar
Anda bahkan dapat melakukan die;
dengan cara yang sama sepertiexit;
- dengan atau tanpa parens.
Satu-satunya keuntungan memilih die()
lebih dari itu exit()
, mungkin waktu Anda luang mengetik surat tambahan ;-)
php -a
) die;
, die();
, exit;
dan exit();
tidak memiliki efek, sementara exit
(tanpa titik koma) keluar modus interaktif.
Seperti semua jawaban benar lainnya mengatakan, die
dan exit
identik / alias.
Meskipun saya memiliki konvensi pribadi bahwa ketika saya ingin mengakhiri eksekusi skrip ketika diharapkan dan diinginkan, saya menggunakan exit;
. Dan ketika saya harus mengakhiri eksekusi karena beberapa masalah (tidak dapat terhubung ke db, tidak dapat menulis ke file dll.), Saya menggunakandie("Something went wrong.");
untuk "membunuh" skrip.
Ketika saya menggunakan keluar:
header( "Location: http://www.example.com/" ); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit; // I would like to end now.
Saat saya menggunakan die:
$data = file_get_contents( "file.txt" );
if( $data === false ) {
die( "Failure." ); // I don't want to end, but I can't continue. Die, script! Die!
}
do_something_important( $data );
Dengan cara ini, ketika saya melihat exit
pada suatu titik dalam kode saya, saya tahu bahwa pada titik ini saya ingin keluar karena logika berakhir di sini. Ketika saya melihat die
, saya tahu bahwa saya ingin melanjutkan eksekusi, tetapi saya tidak bisa atau tidak seharusnya karena kesalahan dalam eksekusi sebelumnya.
Tentu saja ini hanya berfungsi ketika mengerjakan proyek sendiri. Ketika ada lebih banyak orang, tidak ada yang akan mencegah mereka untuk menggunakan die
atau di exit
mana tidak sesuai dengan konvensi saya ...
Ini sesuatu yang cukup menarik. Meskipun exit()
dan die()
setara, die()
menutup koneksi. exit()
tidak menutup koneksi.
die()
:
<?php
header('HTTP/1.1 304 Not Modified');
die();
?>
exit()
:
<?php
header('HTTP/1.1 304 Not Modified');
exit();
?>
Hasil:
exit()
:
HTTP/1.1 304 Not Modified
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
die()
:
HTTP/1.1 304 Not Modified
Connection: close
Hanya memetikan perlu mempertimbangkan ini untuk proyek Anda.
exit
dan die
bekerja dengan cara yang sama, keduanya menutup koneksi.
Secara fungsional, keduanya identik tetapi saya menggunakannya dalam skenario berikut untuk membuat kode dapat dibaca:
Gunakan die () ketika ada kesalahan dan harus menghentikan eksekusi.
misalnya
die( 'Oops! Something went wrong' );
Gunakan exit () ketika tidak ada kesalahan dan harus menghentikan eksekusi.
misalnya
exit( 'Request has been processed successfully!' );
Halaman ini mengatakan die
adalah teman exit
, jadi mereka identik. Tetapi juga menjelaskan bahwa:
ada fungsi yang mengubah nama karena pembersihan API atau alasan lain dan nama lama hanya disimpan sebagai alias untuk kompatibilitas mundur. Biasanya merupakan ide yang buruk untuk menggunakan alias semacam ini, karena mereka mungkin terikat dengan keusangan atau penggantian nama, yang akan mengarah pada skrip yang tidak dapat dipercaya.
Jadi, panggil aku paranoid, tapi mungkin tidak ada die
di masa depan.
is_int()
dan is_integer()
sama-sama bagus misalnya. Melihat php-src
sejarah commit pada GitHub, die()
konstruknya telah ada di PHP setidaknya sejak 1999 ketika dikonversi menjadi repositori SVN, dan mungkin selama bahasa tersebut ada. Tampaknya tidak masuk akal membayangkan bahwa itu akan pernah ditinggalkan.
exit
di masa depan. Atau mungkin tidak ada die
di masa depan"
Output dari https://3v4l.org ini menunjukkan bahwa mati dan keluar secara fungsional identik.
Mereka pada dasarnya sama, meskipun artikel ini menyarankan sebaliknya.
Secara fungsional, mereka identik. Jadi untuk memilih mana yang akan digunakan benar-benar pilihan pribadi. Secara semantik dalam bahasa Inggris, mereka berbeda. Mati terdengar negatif. Ketika saya memiliki fungsi yang mengembalikan data JSON ke klien dan menghentikan program, itu bisa mengerikan jika saya memanggil fungsi ini jsonDie (), dan lebih tepat untuk menyebutnya jsonExit (). Untuk alasan itu, saya selalu menggunakan jalan keluar daripada mati.
Dari apa yang saya tahu ketika saya melihat pertanyaan ini di sini
Dikatakan di sana bahwa "dalam PHP, ada perbedaan yang berbeda dalam output Header. Dalam contoh di bawah ini saya memilih untuk menggunakan header yang berbeda tetapi demi menunjukkan perbedaan antara exit () dan die () itu tidak masalah", dan diuji (secara pribadi)
Dalam w3schools Quiz: Fungsi die () dan exit () melakukan hal yang persis sama? jawaban saya salah. Itu jawaban yang salah. Jawaban yang benar itu benar.
Sesuatu yang saya perhatikan dalam skrip saya setidaknya adalah bahwa exit () akan menghentikan skrip yang sedang dieksekusi dan memberikan kontrol kembali ke skrip panggilan apa pun, sementara die akan menghentikan php di jalurnya. Saya akan mengatakan itu perbedaan yang cukup besar?
Hasil dari fungsi exit () dan fungsi die () sama saja. Tetapi seperti yang dijelaskan dalam halaman manual alias ( http://php.net/manual/en/aliases.php ), dikatakan bahwa fungsi die () memanggil fungsi keluar. Saya pikir ini kode sulit seperti di bawah ini:
function die($msg){
exit($msg);
}
Ini bukan masalah kinerja untuk proyek-proyek kecil, menengah dan besar, tetapi jika proyek memiliki miliaran, miliaran, miliaran, proses miliaran, ini terjadi keadaan optimisasi kinerja yang sangat penting.
Tetapi sebagian besar orang tidak berpikir ini adalah masalah, karena jika Anda memiliki banyak proses, Anda harus memikirkan lebih banyak masalah daripada jika suatu fungsi adalah master atau alias.
Tetapi, jawaban pasti adalah itu; fungsi allways master lebih cepat dari alias.
Akhirnya; Halaman manual Alias mengatakan bahwa, Anda tidak lagi menggunakan die. Ini hanya alias, dan sudah usang.
Biasanya merupakan ide yang buruk untuk menggunakan alias semacam ini, karena mereka mungkin terikat dengan keusangan atau penggantian nama, yang akan mengarah pada skrip yang tidak dapat dipercaya. Daftar ini disediakan untuk membantu mereka yang ingin memutakhirkan skrip lama ke sintaks yang lebih baru.
die()
bukan fungsi yang terpisah. Itu hanya nama lain dari exit()
. Jawaban ini berisi pernyataan yang salah tentang alias dan kinerjanya.
Kedengarannya sama, namun, exit () juga memungkinkan Anda untuk mengatur kode keluar skrip PHP Anda.
Biasanya Anda tidak benar-benar membutuhkan ini, tetapi ketika menulis skrip PHP konsol, Anda mungkin ingin memeriksa misalnya Bash jika skrip menyelesaikan semuanya dengan cara yang benar.
Kemudian Anda dapat menggunakan exit () dan menangkapnya nanti. Die () Namun tidak mendukung itu.
Die () selalu ada dengan kode 0. Jadi pada dasarnya perintah die () melakukan hal berikut:
<?php
echo "I am going to die";
exit(0);
?>
Yang sama dengan:
<?php
die("I am going to die");
?>
die
dan exit
identik (mereka menghasilkan token parser yang sama ( T_EXIT
) dan dieksekusi oleh kode yang sama). Jika parameter bilangan bulat, itu akan mengembalikan kode itu ke shell. Jika tidak, itu akan menampilkannya dan mengembalikan 0. Jadi die
dan exit
secara harfiah alias satu sama lain.
so exit() is exit and die() is also exit :)