Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
PHP'de die, exit’in takma adı olan betik sonlandırma işlemidir. Metin argümanı verilirse onu çıktı olarak üretir. die ile exit aynı işlemi yapar; Bu, ayrı bir hata yönetim sistemi değildir. PHP 8.4 ve sonrasında exit/die normal işlev davranışına sahiptir; daha eski sürümlerde dil yapısı olarak değerlendirilir.

En basit kullanım şöyledir:

PHP:
<?php
die('İşlem durduruldu.');

echo 'Bu satır çalışmaz.';

Çıktı İşlem durduruldu. olur ve echo satırına geçilmez.

die nasıl çalışır?​


die('mesaj') biçiminde kullanıldığında mesajı üretir ve betiği sonlandırır. Genellikle beklenen bir ön koşul sağlanmadığında, dosya bulunamadığında veya geliştirme sırasında hızlı teşhis gerektiğinde kullanılır.

Örneğin bir dosyayı okumadan önce dosyanın gerçekten var olup olmadığını kontrol edebilirsiniz:

PHP:
<?php
$dosya = __DIR__ . '/kontrol.txt';

if (!is_file($dosya)) {
    die('Kontrol dosyası bulunamadı.');
}

echo 'Dosya bulundu.';

Bu yalnız normal dosyanın varlık kontrolüdür; dosyanın içeriğinin okunabildiğini kanıtlamaz. Bu örnekte dosya yoksa die mesajı gösterilir ve Dosya bulundu. yazdırılmaz. Dosya mevcutsa koşul sağlanmaz ve betik normal şekilde devam eder.

Çalıştırılabilir en küçük deneme​


  1. Yukarıdaki kodu kontrol.php adıyla kaydedin.
  2. Dosyanın bulunduğu klasörde terminal açıp php kontrol.php komutunu çalıştırın.
  3. Dosya yoksa Kontrol dosyası bulunamadı. çıktısını bekleyin.
  4. Aynı klasörde kontrol.txt adlı boş bir dosya oluşturup komutu tekrar çalıştırın.
  5. Bu kez Dosya bulundu. çıktısı alınırsa die satırına girilmemiş demektir.

İlk çalıştırmada beklenmeyen biçimde Dosya bulundu. çıktısı alıyorsanız dosya adı ve klasör yolunu kontrol edin. Dosya oluşturulduktan sonra hâlâ hata mesajı görülüyorsa PHP işleminin dizine erişimini ve __DIR__ değerinin beklediğiniz klasörü gösterip göstermediğini inceleyin.

die, exit, return ve throw farkı​


Aynı amaçta görünseler de kullanım alanları farklıdır:
YapıEtkisiNe zaman tercih edilir?
dieBetik çalışmasını sonlandırırBasit durdurma veya hızlı teşhis
exitBetik çalışmasını sonlandırırDaha açık ve genel sonlandırma ifadesi gerektiğinde
returnİçinde bulunduğu fonksiyondan veya dosyadan dönerÇağıran akışın devam etmesi gerektiğinde
throwYakalanabilecek istisna oluştururUygulamanın merkezi hata yönetimi varsa
Sonlandırma sırasında kayıtlı shutdown işlevleri ve nesne yıkıcıları yine çalışabilir. Bu, die satırından sonraki normal kodun devam edeceği anlamına gelmez; kapanış işlemleri ayrı bir aşamadır. Kaynakları düzenli yönetmek için bu yaşam döngüsünü de dikkate alın.

die kullandığınızda çağıran kodun hatayı ele almasını bekleyemezsiniz; işlem doğrudan sonlanır. Bu nedenle küçük betiklerde veya kesin olarak devam edilmemesi gereken kontrollerde pratik olsa da, kullanıcıya sunulan büyük uygulamalarda her hatayı die ile göstermek uygun değildir. Kullanıcıya bozuk veya teknik hata metni göstermek yerine uygulamanın hata yönetimi, günlükleme ve uygun HTTP yanıtı tercih edilmelidir.

Sık yapılan hatalar​

  1. die komutunu try/catch yerine kullanmak: die yakalanabilir bir istisna üretmez; akışı sonlandırır.
  2. Kullanıcı girdisini doğrudan hata mesajına eklemek: Mesajda hassas bilgi, dosya yolu veya veritabanı ayrıntısı göstermeyin.
  3. Her başarısız işlemde die çağırmak: Üretim uygulamasında merkezi hata yönetimi ve kullanıcı dostu hata sayfası daha uygundur.
  4. or die(...) kalıbını düşünmeden kullanmak: Bu kalıp yalnızca önceki ifadenin başarısız sonucunda durur; her hata türünü otomatik olarak yönetmez.

Sık sorulan sorular​


die mesajı neden tarayıcıda doğrudan görünüyor?​


Çünkü die verilen metni çıktı olarak üretir. Bu davranış normaldir; son kullanıcıya gösterilecek hata için uygulamanın kendi hata sayfasını oluşturmanız gerekir.

die(1) ekrana 1 yazdırır mı?​


Hayır. Tamsayı argümanı işlem çıkış durumudur; metin argümanı ise çıktı üretir. die(1) ile die("1") bu yüzden farklıdır. CLI çıkış kodunu HTTP durumuyla da karıştırmayın; web yanıtında uygun hata durumunu ayrıca belirlemek gerekir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.