[Def-Astuce] Empecher une fonction PHP de planter le script

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 ?

D'autres articles qui traitent du même sujet et qui pourraient vous interesser :

8 Commentaires

  • Alexandre C. dit :

    merci pour l’astuce, mais c’est valable pour quelle version de PHP ?

  • Defaite dit :

    Toutes il me semble, ou au moins depuis la 3

  • R.Kueny dit :

    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…

  • Defaite dit :

    Pourquoi sale ?

  • R.Kueny dit :

    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à)

  • Defaite dit :

    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.

  • R.Kueny dit :

    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())

  • Defaite dit :

    Et c’est pour ça que c’est une astuce et pas une recommandation ^^

Flux RSS des commentaires  -   Faire un TrackBack

Ajouter un commentaire

Haut