2009-08-02 13 views
1
// Get the image information and display the image: 
    if ($image = @getimagesize ("../uploads/$pid")) { 
     echo "<div align=\"center\"><img src=\"show_image.php?image=$pid&name=" . urlencode($row['image_name']) . "\" $image[3] alt=\"{$row['print_name']}\" /></div>\n"; 
    } else { 
     echo "<div align=\"center\">No image available.</div>\n"; 
    } 

Que fait @ dans @getimagesize?Que fait @ dans ce php?

+0

duplication possible de [Référence - Que signifie ce symbole en PHP?] (Http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – Gordon

Répondre

10

Il empêche les erreurs d'être affichées et/ou d'être consignées à partir de cet appel de fonction spécifique.

0

Il supprime les erreurs à apparaître. Si la commande que vous appelez a une erreur ou un avertissement à signaler, vous n'obtiendrez aucune impression dans la page. Vous pouvez également le voir avec les routines mysql_ *.

17

C'est un Error Control Operator, qui masque (empêche d'être affiché) toute erreur que la fonction getimagesize pourrait générer.

Il ne généralement pas considérée comme une bonne pratique à utiliser: il rend votre code vraiment plus difficile à déboguer (s'il y a une erreur, vous ne saurez pas à ce sujet):

Actuellement, le "@" erreur-contrôle préfixe d'opérateur va même désactiver les rapports d'erreur pour les erreurs critiques qui mettra fin à l'exécution du script. Entre autres choses, cela signifie que si vous utilisez « @ » pour supprimer les erreurs d'une certaine fonction et soit il n'est pas disponible ou a été mal saisi, le script va mourir là sans indication pour expliquer pourquoi .

Il y a même une extension PHP, appelé scream, qui désactive cet opérateur - peut être très utile lorsque vous maintaintaing une apllication qui a utilisé cet opérateur beaucoup ...

En général, il est préférable pour définir error_reporting (see also) niveau et display_errors pour que les erreurs soient affichées en développement, et non en production - c'est bien plus utile que de toujours les cacher!