@ karakter bir işlev çağrısından önce


135

PHP'deki bu iki işlev çağrısı arasındaki fark nedir?

init_get($somevariable);

@init_get($somevariable);

"@" tüm php hatalarını ve bildirimlerini kapatır
Erkan Özkök

Yanıtlar:


210

"@", işlevinizin neden olabileceği tüm php hatalarını susturur.


Peki ya @PHP'nin trigger_errorişlevinin önüne koyarsanız ? Bunu bazı kodlarda gördüm, ancak davranışları benim için şu ana kadar tutarsız. Bazı durumlarda, hatanın yapılandırılmış hata işleyicisi tarafından bildirildiğini görüyorum ve diğer durumlarda rapor ediliyor gibi görünüyor.
fritzmg

2
@Geçici olarak ayarlayacaktır error_reporting0'a ama olmaz "bastırmak" hatası.
solidgum


36

Daha önce cevaplandığı gibi @, hatanın (varsa) görünmesini durduracaktır.
Performans açısından bu tavsiye edilmez.

Php'nin yaptığı şey:

  • hata görüntüleme durumunu okumak
  • hata ekranını hata göstermeyecek şekilde ayarlama
  • işlevini yürütmek
  • hata ekranını önceki durumuna ayarlama

Kullanım gösteren herhangi bir hata istemiyorsanız error_reporting(0);.

Veya sadece hatasız kod yazın: P


Sıfır koymayı tercih edin, ancak bu işe yararsa, harika bunu bilmiyordu :)
AntonioCS

1
Posta gibi kontrol etmediğiniz işlevler ne olacak? Başka hangi seçenekler var? Şu anda @ kullanıyorum, ancak farklı bir şekilde yapabilmek harika olur
spuas


6

Herkesin dediği gibi, bu belirli işlev için hataların çıkışını durdurur. Ancak bu, hata görüntüleme ayarını iki kez değiştirmek zorunda olduğu için performansı büyük ölçüde düşürür. Uyarıları veya hataları görmezden gelmemenizi ve bunun yerine kodu düzeltmenizi tavsiye ederim.


Cevaplarınız için hepinize teşekkürler. Bu kod benim değil, sadece merak için phpBB koduna bakıyordum, bu yüzden performans sorunum yok. :) Tekrar teşekkürler.
nixie
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.