@ pour php

WRInaute discret
bonjour
je m'interroge sur la présence ou non, des fois sur ce préfixe @ qui est parfois utilisé dans certaines fonctions.

Je m'interroge doublement car certaine fois j'ai des erreurs car je met ou non ce caractère.
merci
 
WRInaute accro
eh bien, tu a compris le principe de la fonction :)
avec un @, l'erreur ne sera pas affichée, tu l'ignore.

sans le @, le script affichera une erreur, et au besoin (en fonction de l'erreur) stoppera le script.

à utiliser si tu décide de gérer toi meme les erreurs donc.
 
WRInaute discret
ha ça veut donc dire que si mon script n'affiche pas d'erreur et que j'ai utiliser ce préfixe, j'ai surement des erreurs ???

est ce possible d'utiliser un message d'erreur personnel ?
 
WRInaute accro
oui, lorsque tu mets un @, tu n'aura pas d'erreur affichée.
pour afficher une erreur, c'est simple

lorsqu'une l'appel à une fonction échoue, celle-ci retourne 0.
donc, il suffit de faire quelque chose comme :
Code:
$var = fonction();
if (!$var) { /* erreur */ }

voir, encore mieux :
Code:
fonction() or die('erreur');
à la place du die, tu peut faire appel à n'importe quelle fonction (qui t'enverra un mail, affichera un message x ou y, ...)
 
Nouveau WRInaute
Je me permet d'ajouter si personne n'y voie d'inconvenient que si l'erreur provient d'une reqquette tu peut utiliser mysql_error();

Comme suit:
Code:
requette()  or die(mysql_error());
 
WRInaute passionné
jarodxxx2 a dit:
Je me permet d'ajouter si personne n'y voie d'inconvenient que si l'erreur provient d'une reqquette tu peut utiliser mysql_error();

Comme suit:
Code:
requette()  or die(mysql_error());

Je vois pas le rapport avec l'interception des erreurs???
 
WRInaute impliqué
KaZhaR a dit:
Code:
fonction() or die('erreur');

Ce n'est certainement pas mieux, cette une grosse erreur de conception digne d'un lapin de deux semaines.

Il faut apprendre à gérer proprement les erreurs qui peuvent intervenir dans un script et pas juste se débarasser de celle-ci en laissant l'internaute devant un message aussi abscond.
 
Nouveau WRInaute
non mais n'importe koi ma parole !!!

Il t'arrive de developper ?!?

Tu ne laisse pas de messages d'erreurs ... Tut'arrange pour tout prevoir pour qu'il n'y ai pas d'erreur du tout ....

Mais pour reparer tes erreurs tu te doie de les connaitre non ?

c'est la que mysql_error(); va te servir a repperer tes erreur, les corriger avant de mettre ton scrip en ligne ...
 
WRInaute impliqué
jarodxxx2 a dit:
non mais n'importe koi ma parole !!!

Il t'arrive de developper ?!?

Oui, c'est mon métier depuis 7 ans environ.

Tu ne laisse pas de messages d'erreurs ...

Non, je les intercepte et gère les problèmes avant d'envoyer un message à l'internaute ou de continuer le script si le problème n'est pas bloquant.

T'aimerais que les softs que tu utilises t'affichent sans arrêt des message du genre "Invalid access memory at address xxxx:xxxx", non ils ne le font pas, ils te présentent un message d'erreur.

Tut'arrange pour tout prevoir pour qu'il n'y ai pas d'erreur du tout ....

Bien sûr que non, mais les langages de programmation comme PHP disposent de tout ce qui faut pour pouvoir gérer les erreurs ( gestion des exceptions, syslog, set_error_handler ... ).

Dans certains systèmes ( webservices par exemple ), tu ne peut pas te permettre de laisser le script générer une erreur, il faut donc l'intercepter et la gérer.

Mais pour reparer tes erreurs tu te doie de les connaitre non ?

Les fichiers logs et les debuggers c'est pas fait pour les chiens.

C'est ça qui fait la différence entre un projet professionnel conçu avec des méthodes de développement éprouvées et un hobbiiste qui fait du code spaghetti.
 
Nouveau WRInaute
Ecoute je ne met en doute tes comptences en programmation et ne critique pas ton travail (evite de parler de hobbiiste qui fait du code spaghetti) sans savoir a qui tu parle !

Je suis loin de me considerer comme un pro du PHP mais je code depuis assez longtemps pour savoir de quoi je parle ... j'aime pas qu'on me prenne de haut !

je suis d'avis que la gestion des erreurs doit se faire en local pour soit meme .. une fois le script en ligne il ne devrait pas contenir d'erreurs du tout ...

Je suis loin de pretendre qu'il ne m'arrive pas d'avoir des messages d'erreurs non desiré c'ets pour cela que le personalise les erreurs dans la cersion "en ligne" de mes sites mais en local il est utile de connaitres ses erreurs pour les coriger

Je ne met pas en doute tes methoses , il faut simplement accepter qu'il y a DES methodes et non ps uniquement SA methode ...
J'apprend tous les jours, et je pensse que tu devrais plutot tenter de discuter des methodes differentes des tiennes plutot que de Critiquer celles des autres non ?

Sans rancune aucune
 
WRInaute impliqué
jarodxxx2 a dit:
j'aime pas qu'on me prenne de haut !

Je ne prend personne de haut, mais conseiller de coder de cette façon:
Code:
fonction() or die('xxxx')
ce n'est pas malin du tout, au moins utiliser trigger_error qui permet de ne pas à avoir à retoucher le code pour sa mise en production, il suffit de mettre show_errors à off.

je suis d'avis que la gestion des erreurs doit se faire en local pour soit meme .. une fois le script en ligne il ne devrait pas contenir d'erreurs du tout ...

Il y a des erreurs qui arrivent même en production ( connexion SGBD par exemple ) et il faut bien les traiter pour que l'internaute comprenne ce qui se passe, quelque chose d'un peu plus intelligent que "Erreur critique" sur une page blanche et il faut aussi les logger pour savoir dans quel contexte cette erreur a pu arriver et corriger le programme.

Je suis loin de pretendre qu'il ne m'arrive pas d'avoir des messages d'erreurs non desiré c'ets pour cela que le personalise les erreurs dans la cersion "en ligne" de mes sites mais en local il est utile de connaitres ses erreurs pour les coriger

Tu maintiens donc deux versions différentes, c'est pas très efficace tout ça.

Faire du débogage avec un fichier de trace et un debugger qui ne sont pas intrusifs permet de n'avoir qu'une seule version et en apprend beaucoup plus sur le contexte s'une erreur qu'un simple "die('Erreur')"

Je ne met pas en doute tes methoses , il faut simplement accepter qu'il y a DES methodes et non ps uniquement SA methode ...

C'est bien pour ça que je dis qu'il y a plusieurs méthodes pour le faire, mais intercepter les erreurs, ce n'est pas ma méthode, c'est la base de la programmation.

Un langage de programmation comme Java refusera même de compiler un programme si tu n'as pas prévu d'intercepter une erreur qu'une méthode est susceptible de lancer.

C'est une critique récurrente dans le milieu professionnel: "PHP n'est pas fait pour des projets professionnels", alors que PHP est tout à fait adapter, ce sont les méthodes de programmation qui sont souvent inexistentes dans certains projets ( et parfois des projets très connus ) du au manque de culture de programmation de certains développeurs.
 
Nouveau WRInaute
Ecoute c'est tres bien tout ca ... ta methode semble efficasse mais ce n'est pas la mienne !

Mais j'ai vraiment pas envie de perorer la dessus ... Dans le doute je suis meme partie me renseigner chez certains codeurs plus doués que moi et ils semblent etre de mon avis !

Afin d'eviter les malentendus je rappelle que je parle de or die(mysql_error()); pour la gestion des erreurs SQL ...

Si ma methode ne te convient pas c'est ton droit mais ne viens pas me parler de
... une grosse erreur de conception digne d'un lapin de deux semaines ...
...un hobbiiste qui fait du code spaghetti...

merci
 
WRInaute discret
jarodxxx2 > Ne te froisse pas, mais tu es bien d'accord qu'il faut toujours être capable de savoir quelle partie du programme a généré une erreur ? Alors, ta solution n'est pas la bonne, à moins que tu fasses die(__FILE__.' - '.__LINE__.' '.mysql_error()), ce qui revient à afficher le message d'erreur tel quel.
Au pire tu peux mettre error_reporting(0) si tu ne veux pas que tes visiteurs sachent où se produisent les erreurs, mais en local toutes les erreurs doivent être affiché d'une manière ou d'une autre (handler, exceptions, etc.).
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut