=================================================
Remarque: tout d'Abord, je me rends compte que 99% des développeurs PHP utilisez la suppression d'erreur de l'opérateur (j'ai utilisé pour être l'un d'eux), donc je m'attends à tout PHP dev qui voit cela de bas de voter de moi, mais s'il vous plaît signet ce de sorte que vous pouvez revenir et de le changer pour un vote dans quelques années, quand vous vous rendez compte que j'avais raison.
=================================================
À votre avis, est-il toujours valable d'utiliser l'opérateur @ pour supprimer une erreur/d'avertissement en PHP alors que vous pourriez être la manipulation de l'erreur?
Réponse courte:
PAS de!!!!!!!!!!!!!!!!!!!!
Plus de plus de la réponse correcte:
Je ne sais pas car je ne sais pas tout, mais jusqu'à présent je n'ai pas rencontré de situation où c'était une bonne solution.
Pourquoi c'est mauvais:
Dans ce que je pense est d'environ 7 ans à l'aide de PHP maintenant, je l'ai vu sans fin de débogage souffrance causée par la suppression d'erreur de l'opérateur et n'ai jamais rencontré une situation où c'était inévitable.
Le problème, c'est que le morceau de code que vous la suppression des erreurs, peuvent aujourd'hui la cause de l'erreur que vous voyez; toutefois, lorsque vous modifiez le code qui l'a supprimé la ligne s'appuie sur la, ou de l'environnement dans lequel il s'exécute, puis il ya toutes les chances que la ligne va tenter de sortie d'une erreur tout à fait différent de celui que vous essayez de l'ignorer. Alors comment dépister une erreur qui n'est pas sortie? Bienvenue sur le débogage de l'enfer!
Il m'a fallu plusieurs années pour comprendre comment beaucoup de temps que je perdais tous les deux mois, en raison de la suppression d'erreurs. Le plus souvent (mais pas exclusivement), c'était après l'installation d'un tiers script/app/bibliothèque, qui était exempt d'erreurs dans les développeurs de l'environnement, mais pas le mien, parce que de un php configuration du serveur ou de la différence ou de dépendance manquante qui aurait normalement sortie immédiatement une erreur d'alerte à ce que le problème a été, mais pas quand le dev ajoute la magie @.
Les solutions de rechange (en fonction de la situation et du résultat souhaité):
Gérer l'erreur réelle que vous êtes au courant, de sorte que si un morceau de code qui va provoquer une certaine erreur, il n'est pas exécuté dans ce contexte particulier. Mais je pense que vous obtenez de la présente partie et que vous avez été inquiet à propos de la fin les utilisateurs de voir les erreurs, ce qui est ce que je vais maintenant aborder.
Régulièrement des erreurs, vous pouvez définir un gestionnaire d'erreurs, de sorte qu'ils sont de sortie dans la façon dont vous le souhaitez lorsque c'est à vous de l'affichage de la page, mais caché des utilisateurs finaux et des connectés de sorte que vous savez ce que les erreurs de vos utilisateurs sont de déclenchement.
Pour les erreurs fatales ensemble display_errors à off (votre gestionnaire d'erreur est toujours déclenché) dans votre php ini et activer la journalisation des erreurs. Si vous avez un serveur de développement, ainsi que d'un serveur (que je recommande), cette étape n'est pas nécessaire sur votre serveur de développement, de sorte que vous pouvez toujours effectuer le débogage de ces erreurs fatales, sans avoir à recourir à regarder le fichier journal des erreurs. Il y a même un truc à l'aide de la fonction d'arrêt d'envoyer beaucoup d'erreurs fatales à votre gestionnaire d'erreur.
En résumé:
Veuillez éviter de l'utiliser. Il peut y avoir une bonne raison pour cela, mais je suis encore à voir, donc, jusqu'à ce jour il est de mon avis que l' (@) suppression d'Erreur de l'opérateur est le mal.
Vous pouvez lire mon commentaire sur le Contrôle d'Erreur des Opérateurs de page dans le manuel PHP si vous voulez plus d'info.
Edit: Btw pour le 2 en bas électeurs (3, ce qui est surprenant) jusqu'à présent, il serait grand si vous avez laissé un commentaire. Si je me trompe sur ce ensuite j'aimerais savoir pourquoi. D'autre part, si vous êtes juste en bas à droit de vote de moi parce que je suis arrogant, juste assez. C'est un appel juste, mais s'il vous plaît l'indiquer comme votre raison.