@ $ var vs isset ($ var)

4 Cevap php

Bu iyi bir uygulama ya da PHP'nin hata bastıran kullanmak için kabul edilebilir bir yolu var mı?

if (isset($_REQUEST['id']) && $_REQUEST['id'] == 6) {
  echo 'hi';
}

if (@$_REQUEST['id'] == 6) {
  echo 'hi';
}

EDIT:
I thought so too. The code (and idea) is from friend.
Thanks for proving me right. :)

4 Cevap

Bu hata bastıran kullanmak için gerçekten iyi bir uygulama değil. Hiç de $ _REQUEST kullanmak için bile iyi bir uygulama değil. Sadece isset () veya! Boş () veya her türlü kullanmak, tembel olmayın.

Ve bir şey daha, o) (isset kullanırken parantez kapatmak için "iyi bir uygulama" olduğunu :)

@ Kullanarak hatalarını bastırmak sadece hata ekranı değil, oluşturma bastırır. Eğer ilk isset () kontrol yoksa Yani hata küçük bir performans isabet olsun.

Hayır, bence gerçekten kabul edilebilir bir uygulama değil. Hata bastırılması kullanırken bile ayrı özensiz görünüyor aslında, özel hata işleyicileri hala tetiklenir.

manual tamamen kullanımını önlemek için daha fazla neden sunuyor:

Şu anda "@" hata-kontrol operatörü prefix bile devre dışı hatası script uygulamasını sona erecektir kritik hatalar için raporlama olacaktır. Diğer şeyler arasında, bu belirli bir işlevi hatalarını bastırmak için "@" kullanmak ve ya mevcut değil veya yanlış yazılmış ise, komut neden olarak hiçbir gösterge ile orada ölecek demektir.

daha spesifik olduğu gibi ben her zaman () isset kullanın. Ayrıca, ben daha özel bir süper küresel değişkenini kullanmak, yani ya $ _POST, $ _GET, $ _SESSION kullanmak istiyorum. Kodunuzu açık olmak, daha sonra baş ağrısı önler :)

Bu benim kontrolleri çalıştırmak nasıl:

if(isset($_POST['id']) && $_POST['id'] == '6')
{
     // do stuff
}

Benim değişken yazının parçası olup olmadığını, sonra bir yazının bir varlığı kontrol eder, ve nihayet bu iki geçişte eğer, benim değişken 6 eşit olup olmadığını görmek için denetler, çünkü bu, oldukça kapsamlı denetimi olduğunu.