bonjour
j'ai trouvé dans quelques exemples de scripts une utilisation de "@" dans la syntaxe, par exemple :
que signifie le @ exactement ?Code:
1
2
3
4 @mysql_connect(); @mail(); ...
merci d'avance :;)
Version imprimable
bonjour
j'ai trouvé dans quelques exemples de scripts une utilisation de "@" dans la syntaxe, par exemple :
que signifie le @ exactement ?Code:
1
2
3
4 @mysql_connect(); @mail(); ...
merci d'avance :;)
le @ permet simplement de désactiver la gestion de l'erreur pour la fonction. aucune erreur php ne sera affichée si ta requête est en erreur.
Salut,
sauf erreur de ma part, ça permet de ne pas afficher les erreurs si il y en a.
à vérifier ;)
et c'est donc une pratique fortement déconseillée...
tout dépend de la manière dont c'est développé... ça peut être aussi très utile.
oui, c'est vrai ... sauf si c'est pour remplacer les erreurs par un système de gestion d'exceptionsCitation:
Envoyé par Amara
Moi je fais souvent des trucs du genre :
Dans ce cas là c'est permis :)Code:
1
2
3
4
5
6 if($handle = @fopen('unfichier.txt')) { // ... traitempent du fichier } else throw new ExceptionPerso("echec de l'ouverture du fichier");
Oui c'est pour ça que j'ai mis "fortement", mais en général dans les sujets postés ici avec le @ qui pose problème c'est juste que les gens pensent être tranquilles en n'affichant pas les messages d'erreur mais forcément ça donne un comportement bizarre si les erreurs ne sont pas traitées en conséquence :ccool:
100% d'accord avec toi, je ne disais pas ça pour te contredire :mrgreen:
j'ajouterais ceci, pour zakaria_ et les éventuels autres lecteurs de ce post qui se posent des questions sur le sujet :
si vous voulez cacher les messages d'erreur de votre appli une fois en production (pour qu'on ne voie pas qu'elle est bugguée, ou pour de louables précautions de sécurité), la bonne façon de procéder est de configurer l'option suivante dans le php.ini :
tout en redirigeant les erreurs (non affichés mais bien présentes) vers un fichier de log :Code:display_errors = 0;
Comme ça, les erreurs ne sont pas affichées à l'utilisateur, mais l'admin peut voir leurs traces et détecter d'éventuels bugs "post-déploiement" :DCode:
1
2log_errors = 1; error_log = /chemin/vers/unfichier.log;
Par contre, en phase de développement c'est complètement débile, evidamment :aie: