
Astuce très simple mais pourtant tellement importante ! Vous avez une fonction qui, une fois sur deux bloque votre script ? Procédez comme suit :
Ajoutez simplement un arobase « @ » devant votre fonction. PHP utilisera la fonction mais si jamais il y a une erreur, ne la retournera pas et fera comme si de rien était.
Par exemple si je veux supprimer un fichier j’utiliserais « unlink » :
unlink(‘monfichier.txt’) ;
Problème, si « monfichier.txt » n’existe pas, PHP me retournera une erreur. Je rajoute donc le @ devant et le tour est joué :
@unlink(‘monfichier.txt’) ;
Et vous, vous le saviez ?
Comments
merci pour l’astuce, mais c’est valable pour quelle version de PHP ?
Toutes il me semble, ou au moins depuis la 3
C’est tout de même sacrément sale comme méthode… il vaut mieux gérer l’erreur via les exceptions.
Le @ est à bannir des codes…
Pourquoi sale ?
Parce que tu caches seulement l’erreur, tu ne la traites pas. Un script bien pensé ne devrais pas avoir besoin de cela, un test sur l’existence du fichier dans ton exemple résoudrait le problème
(et si tu ne veux pas afficher l’erreur, un petit log pour te le signaler à toi et voilà)
Pour mon exemple c’est sur. Mais par exemple avec fopen sur un fichier distant, même en test avec if(fopen()) il te retourne l’erreur si tu ne peux pas accéder au fichier. Donc un petit @ est obligatoire.
En effet, avec fopen je suis ok, mais il ne faut pas le faire avec toute les fonctions, uniquement dans très peu de cas. Quand c’est écrit dans le manuel c’est normal par exemple (pour fopen())
Et c’est pour ça que c’est une astuce et pas une recommandation ^^