Yanıtlar:
Fark yok - onlar aynı.
PHP Kılavuzu exit
:
Not: Bu dil yapısı eşdeğerdir
die()
.
PHP Kılavuzu die
:
Bu dil yapısı eşittir
exit()
.
die
hata ile ilgili duraklar ve exit
diğer tüm senaryolar için ayrılırım. Kodu okurken daha iyi akıyor gibi görünüyor.
die
yazmaktan çok daha hızlı exit
... exit
PHP-programcı olmayanlar için daha okunabilir olduğu için kullanmaya başladım , ancak die
yazarken daha hızlı acele. Ayrıca, yazarken, yazmak için ellerimin pozisyonunu değiştirmek zorunda değilim die
.
Arasındaki fark die()
ve exit()
PHP onların olduğu kökenli .
exit()
dan exit()
olarak C .die()
dan die
içinde Perl .die()
ve exit()
olan eşdeğer fonksiyonlar.
PHP Kılavuzu die
:
Bu dil yapısı eşittir
exit()
.
PHP Kılavuzu exit
:
Not: Bu dil yapısı eşdeğerdir
die()
.
İşlev Takma Adları Listesi için PHP Kılavuzu :
die()
ve exit()
olan diğer dillerde farklı ancak PHP onlar aynıdır.
Gönderen Henüz başka bir PHP rant :
... Bir C ve Perl kodlayıcı olarak, "Neden, exit () sayısal bir çıkış durumuyla programı kapatır, die () ise stderr hata mesajını yazdırır ve EXIT_FAILURE durumuyla çıkar. " Ama sonra PHP'nin dağınık sözdizimi ülkesinde olduğumuzu hatırladım.
PHP'de exit () ve die () aynıdır.
Tasarımcılar açıkça "Hmm, C'den çıkış () ödünç alalım . Ve Perl millet muhtemelen Perl'den olduğu gibi die () alırsak hoşuna gidecek . Hata! Şimdi iki çıkış fonksiyonumuz var! bir dize veya tamsayıyı argüman olarak alıp özdeş yapabilir! "
Sonuç, bunun işleri gerçekten "daha kolay" ve daha kafa karıştırıcı hale getirmediğidir. C ve Perl kodlayıcıları yalnızca bir tamsayı çıkış değeri atmak için exit () öğesini kullanmaya devam eder ve bir hata mesajını atmak ve bir hata ile çıkmak için die () yöntemini kullanmaya devam eder. Yeni başlayanlar ve ilk dil olarak PHP insanlar muhtemelen "umm, iki çıkış fonksiyonu, hangisini kullanmalıyım?" Kılavuz, exit () ve die () öğelerinin neden olduğunu açıklamaz.
Genel olarak, PHP'nin bunun gibi garip bir fazlalığı vardır - farklı dil geçmişlerinden gelen insanlara dost olmaya çalışır, ancak bunu yaparken kafa karıştırıcı fazlalık yaratır.
exit()
Bağlantıyı kapatmazken yanıtlayan başka bir kullanıcı die()
alakalı görünüyor.
Daha önce belirtildiği gibi, bu iki komut aynı ayrıştırıcı belirtecini üretir.
FAKAT
Küçük bir fark vardır ve ayrıştırıcının jetonu iade etmesi ne kadar zaman alır.
Ben PHP ayrıştırıcı çalışmadım, ama eğer "d" ile başlayan fonksiyonların uzun bir listesi ve "e" ile başlayan daha kısa bir liste, o zaman " e". Tüm işlev adının nasıl denetlendiğinden dolayı başka farklılıklar olabilir.
PHP ayrıştırma adanmış "mükemmel" bir ortam ve farklı parametreleri ile istekleri bir sürü sürece ölçülebilir olacak şüpheliyim. Ama bir fark olmalı, sonuçta PHP yorumlanmış bir dildir.
Kalıpta PHP kılavuzu :
die - Çıkmaya eşdeğer
Hatta yapabilirsiniz die;
aynı şekilde exit;
- ya Pars olmadan.
Seçmenin tek avantajı die()
üzerinde exit()
, fazladan bir mektup yazarak üzerinde yedek zaman olabilir ;-)
php -a
) die;
, die();
, exit;
ve exit();
ise hiçbir etkisi yoktur exit
(noktalı virgül olmadan) interaktif modundan çıkar.
Diğer tüm doğru cevapların söylediği gibi die
ve exit
aynı / takma adlardır.
Her ne kadar bir senaryoyu beklenen ve istendiğinde yürütmeyi sonlandırmak istediğimde kullanacağım kişisel bir kuralım olmasına rağmen exit;
. Ve bazı sorunlar nedeniyle yürütmeyi sonlandırmam gerektiğinde (db'ye bağlanamadım, dosyaya yazamadım vb.), die("Something went wrong.");
Komut dosyasını "öldürmek" için kullanıyorum.
Çıkışı kullandığımda:
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.
Die kullandığımda:
$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 );
Bu şekilde, kodumun bir exit
noktasında gördüğümde, bu noktada mantık burada bittiği için çıkmak istediğimi biliyorum. Gördüğümde die
, yürütmeye devam etmek istediğimi biliyorum, ancak önceki yürütmedeki hata nedeniyle yapamam veya yapmamam gerekiyor.
Tabii ki bu sadece bir proje üzerinde çalışırken işe yarar. Daha fazla insan olduğunda kimse onların kullanmasını die
veya exit
sözleşmelerime uymadığını engelleyemez ...
İşte oldukça ilginç bir şey. exit()
Ve die()
eşdeğer olmasına rağmen bağlantıyı die()
kapatır . bağlantıyı exit()
kapatmaz .
die()
:
<?php
header('HTTP/1.1 304 Not Modified');
die();
?>
exit()
:
<?php
header('HTTP/1.1 304 Not Modified');
exit();
?>
Sonuçlar:
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
Sadece bunu projeniz için dikkate almanız gerekiyorsa.
exit
ve die
her ikisi de yakın bağlantısı, aynı şekilde çalışır.
İşlevsellik açısından aynıdır, ancak kodları okunabilir yapmak için aşağıdaki senaryolarda kullanırım:
Bir hata olduğunda die () kullanın ve yürütmeyi durdurun.
Örneğin
die( 'Oops! Something went wrong' );
Bir hata olmadığında ve yürütmeyi durdurmanız gerektiğinde exit () öğesini kullanın.
Örneğin
exit( 'Request has been processed successfully!' );
Bu sayfa diyor ki die
, exit
onlar aynı. Ancak şunu da açıklar:
API temizleme veya başka bir nedenden dolayı adları değiştiren işlevler vardır ve eski adlar yalnızca geriye dönük uyumluluk için takma ad olarak tutulur. Genellikle bu tür takma adların kullanılması, eskime veya yeniden adlandırmaya bağlı olabileceğinden, taşınabilir yazıya yol açacaktır.
Bu yüzden bana paranoyak deyin, ama die
gelecekte hiç bir şey olmayabilir .
is_int()
ve is_integer()
örneğin eşit derecede iyi olduğunu söylüyor . php-src
GitHub'daki taahhüt geçmişine bakıldığında , die()
yapı en azından 1999'dan beri bir SVN deposuna dönüştürüldüğünde ve muhtemelen dil var olduğu sürece PHP'dedir. Kullanımdan kaldırılacağını hayal etmek saçma görünüyor.
exit
die
Https://3v4l.org adresinden yapılan bu çıktı, kalıp ve çıkışın işlevsel olarak aynı olduğunu gösterir.
Bu makale aksini öne sürmesine rağmen, aslında aynıdırlar.
İşlevsel olarak aynıdırlar. Yani hangisini kullanacağınızı seçmek tamamen kişisel bir tercihtir. Anlamsal olarak İngilizce, farklılar. Die kulağa olumsuz geliyor. JSON verilerini istemciye döndüren ve programı sonlandıran bir işlevim olduğunda, bu işlevi jsonDie () çağırırsam ve jsonExit () olarak adlandırmak daha uygun olabilir. Bu nedenle daima kalıp yerine çıkış kullanıyorum.
Bu soru baktığımda ne bildiklerini itibaren burada
"PHP'de Header çıktısında belirgin bir fark var. Aşağıdaki örneklerde farklı bir header kullanmayı seçtim ama exit () ve die () arasındaki farkı göstermek adına" ve test edildi (kişisel olarak)
W3schools Quiz: die () ve exit () işlevleri aynı şeyi yapar? cevabım yanlış. Bu yanlış cevap. Doğru cevap doğrudur.
Komutlarımda en azından fark ettiğim bir şey, exit () şu anda yürütülen komut dosyasını durduracak ve herhangi bir çağıran komut dosyasına geri geçecekken, die parçalarında php'yi durduracak. Bunun oldukça büyük bir fark olduğunu söyleyebilirim?
Exit () işlevi ve die () işlevinin sonucu her zaman aynıdır. Ancak diğer ad manuel sayfasında ( http://php.net/manual/en/aliases.php ) açıklandığı gibi , die () işlevinin çıkış işlevini çağırdığını söylüyor. Ben aşağıdaki gibi kodlanmış sert olduğunu düşünüyorum:
function die($msg){
exit($msg);
}
Bu, küçük, orta ve büyük projeler için bir performans sorunu değildir, ancak projenin milyarlarca çarpımı milyarlarca çarpımı milyarlarca süreç varsa, bu çok önemli bir performans optimizasyon durumu olur.
Ancak çoğu insan bunun bir sorun olduğunu düşünmez, çünkü bu kadar çok işleminiz varsa, bir fonksiyonun ana veya takma addan daha fazla sorun düşünmeniz gerekir.
Ancak, kesin cevap şudur; allways master işlevi takma addan daha hızlıdır.
En sonunda; Takma ad kılavuz sayfası , artık kalıp kullanamayacağınızı söylüyor. Bu sadece bir takma addır ve kullanımdan kaldırılmıştır.
Genellikle bu tür takma adların kullanılması, eskime veya yeniden adlandırmaya bağlı olabileceğinden, taşınabilir yazıya yol açacaktır. Bu liste, eski komut dosyalarını yeni sözdizimine yükseltmek isteyenlere yardımcı olmak için sağlanmıştır.
die()
ayrı bir işlev değildir. Bu sadece başka bir isim exit()
. Bu yanıt takma adlar ve performansları hakkında yanlış ifadeler içeriyor.
Aynı ses çıkarırlar, ancak exit () ayrıca PHP betiğinizin çıkış kodunu ayarlamanızı sağlar.
Genellikle buna gerçekten ihtiyacınız yoktur, ancak konsol PHP komut dosyaları yazarken, komut dosyasının her şeyi doğru şekilde tamamlayıp doldurmadığını örneğin Bash ile kontrol etmek isteyebilirsiniz.
Ardından exit () öğesini kullanabilir ve daha sonra yakalayabilirsiniz. Ancak Die () bunu desteklemiyor.
Die () her zaman 0 kodunda bulunur. Bu nedenle, esas olarak bir die () komutu aşağıdakileri yapar:
<?php
echo "I am going to die";
exit(0);
?>
Hangisi ile aynı:
<?php
die("I am going to die");
?>
die
ve exit
aynıdır (aynı ayrıştırıcı jetonunu ( T_EXIT
) üretir ve aynı kod tarafından yürütülür). Parametre bir tamsayı ise, bu kodu kabuğa döndürür. Değilse, bu çıkış o olacak ve 0. So dönmek die
ve exit
tam anlamıyla her-diğer rumuzudur.
so exit() is exit and die() is also exit :)