PHP takma @ işlevi

6 Cevap php

Ben PHP için yeni ve ben bazı örnekler) @ mysql_ping gibi @ öneki ile (bir işlevi çağırarak görünce kafam karıştı.

Ne için? Googling / arama yana bir yardım çok değil @ atılır ve 'takma' yeterince iyi bir anahtar kelime değildir alır.

6 Cevap

@ Hataları, uyarıları ve bildirimleri bastırır.

Eğer bir özel error handler ile veya düzgün hataları işleyebilir böylece $ değişken php_errormsg nedeniyle çek ile tamamlamak eğer iyi bir amaç için kullanabilirsiniz.

Benim durumumda, bu doğru kullanım çok görmedim ve bunun yerine sadece onlara hareket olmadan hataları gizlemek için, kötü bir şekilde bir çok kullanılır.

http://www.php.net/manual/en/language.operators.errorcontrol.php daha fazla bilgi

It suppresses the output of error messages. Contrary to another commentator here, I think that it is good programming practice to use it (especially if you are developing a web app, where the output would be mixed in the html of the output page).

Mysql_connect gibi fonksiyonları bir kaynak tanımlayıcı, veya hata durumunda FALSE döndürür. @ Mysql_connect (...) kullanmak ve dönüş değerini kontrol edin.

"Sembolünden php" için google'da bu çağrı nedenleri herhangi bir hata iletileri görüntülemek değil PHP sorar önerir.

Aksi çıkış olabilir hataları bastırır.

Kaçınılmaz bir hata meydana geldiğinde, bunun nedenini izini saatlerce bağlı zorluklara neden olarak, ağrı ve sıkıntı için bir reçetedir. @ Operatörü kullanılmış olmasaydı, o zaman hata saniye bulunabilir olurdu.

, Kullanmak canlı sitede görüntülenmesini hataları önlemek için display_errors ve hatalar.log ini ayarlarını kullanmak ve onları dev sitede gösterilen izin için iyi bir sebep yoktur.

Görmek istemediğiniz bir hata varsa, bunu bastırmak daha sadece sabitleme daha iyiyiz!

Harici lib ve sizin kontrolünüz dışında bir şey varsa, sadece günlükleri yazmak üretime display_errors kapatın, ve onunla yaşamak. Şimdi bastırma ve yaşamak için mutluyuz konum hata DAİMA oradan atılır hata olup olmayacağını kimse bilemez çünkü.

@ === BAD

Bir sembole sahip bir işlev önek bir hata oluşursa eğer PHP hata işleyicisi tetikleme durur. Bunu kullanmaya karar verirseniz, kendinizi işleme tüm hata yapmanız gerektiğini unutmayın.

$test = @file_get_contents('nonexistant.file');
if(!$test)
{
    die('Failed');
}

Daha iyi bir uygulama display_errors kapatmak ve özel hata işleyicileri kullanabilirsiniz (Error Exception bakınız) etmektir.

Yönetici, php çevre ile oynamak veya değeri önemli değildir ve ağırlıklı olarak kozmetik olduğunu istemiyorsa bazen yararlıdır-özellikle olduğunu. Olsa da, hatırlıyor musun; Bu geçici bir çözüm değil, bir derde deva değil.

[...]

.$foutDate = @filemtime($keyring); /* Don't care, as we've already established file */

$f["date"] = $foutDate;

$f["fullDate"] = date("r", $foutDate);

[...]