Les fonctions PHP peuvent renvoyer des warning et des notices. L'@ permet de ne pas le faire.
<?php
error_reporting(E_ALL); // on affiche toutes les erreurs générées dans la page
echo "---\n";
echo $foo;
echo "---\n";
echo @$bar;
echo "---\n";
echo "Toto";
?>
Code html généré :
---
<br />
<b>Notice</b>: Undefined variable: foo in
<b>/var/www/web/public/bordel.deblan.fr/public_htm
l/html3/t.php</b> on line <b>4</b><br />
---
---
Toto
Mettre les @ devant des fonctions comme fopen n'est pas un mal absolu...quand on doit tester certaines choses avec des fonctions qui retourne un warnings, ce n'est pas cool (exemple con : mysql_connect).
Par contre, mettre un code comme :
<?php
// début du fichier
$foo = @$_POST["bar"];
C'est mal, c'est moche, c'est crade, c'est tout ce que tu veux.