Das @ verhindert, dass die eventuell auftretende Fehlermeldung ausgegeben wird. Fehler auf diese Weise zu unterdrücken ist schlecht, weil man als Programmierer von ihnen eigentlich immer Kenntnis haben möchte, um sie von vornherein zu verhindern, sie abzufangen oder zumindest drauf zu reagieren.
Ach Sven: Wieso erzählst du denn diese Leier, wenn der Stand der Diskussion schon längst darüber hinaus ist? Das mag ja als Schwarz-Weiß-Faustregel stimmen, aber tricky wirds doch erst in der Grauzone.
Auf Fehler kann man je nach Anwendung von @ dennoch reagieren und dass man »eigentlich immer Kenntnis« von ihnen haben möchte, wurde im Thread auch schon widerlegt - zumindest will man es nicht bei manchen Warnings und Notices, die einfach uninteressant sind, wenn man eben z.B. den Rückgabewert des mit @ versehenen Aufrufs zur Fehlerbehandlung verwendet.
Mit einer eigenen Fehlerbehandlungsfunktion kann die Ausgabe von Fehlermeldungen für behebbare Fehler beliebig gestaltet, also auch unterbunden bzw. in eine Datei geloggt werden.
Ist doch Unsinn, jeden Befehl, dessen Warnings und Notices man antizipiert, durch einen eigenen Error-Handler zu kapseln...
Im übrigen entspricht es meiner Erfahrung, dass sämtliche PHP-Funktionen bei validen Aufrufen je nach Erfolg entweder ein nutzbares Ergebnis oder aber explizit "false" zurückgeben.
Ja, aber dabei gerne überflüssige Notices und Warnings absondern.
Mathias