Moi moin,
Weil du damit -- wie gesagt -- lediglich die Fehlermeldung unterdrückst, aber nicht den Fehler. Stell dir z.B. einmal folgendes vor (beliebter Einsteigerfehler):
$fh = @fopen('/pfad/zu/1/Datei', 'r');
while ($line = @fgets($fh))
// AUA!¹
tueEtwasMit($line); // was passiert hier?
@fclose($fh);
- Dann will ich mal hoffen, daß der Inhalt des Files nicht aus "false" oder "0" besteht, sonst wird nach Deinem Bespiel nichts verarbeitet.
$d='/pfad/zu/1/Datei';
$c=filesize($d);
if(is_resource($f=@fopen($d,'r'))){
while(!feof($f))
tueEtwasMit(fgets($f,$c));
fclose($f);
}
else mach_was_anderes();
-- Deshalb ist es besser, zusätzlich sämtliche Fehler abzufangen und Rückgabewerte zu prüfen, weil du dann _meistens_ weißt, was passiert.
Dem stimme ich zu. Da Fehlermeldungen nur beim Debuggen sinnvoll sind, wird man entweder die Fehlermeldungen im Programm mittel "@" oder durch Konfiguration unterdrücken. Genau das macht mein Beispiel.
Dies stellt aber keine Begründung dar, warum nun "@" vermieden werden sollte. Ganz im Gegenteil geben Fehlermeldungen PHPs zum Teil Informationen für mögliche Angriffe preis. Weiterhin gebe ich auch zu bedenken, daß -ob mit "@" oder ohne- die weitere Programmausführung nicht beeinflußt wird. "@" tut also an dem von Dir thematisiertem Punkt rein gar nichts zur Sache.
Im Sinne von Stil also Guter Stil™, hätte ich Konfiguration statt "@" akzeptiert - schlampige Programmierung hingegen akzeptiere ich als Begründung nicht.
Gruß aus Berlin!
eddi