Pourquoi ne pouvez-vous pas masquer les erreurs avec l'opérateur @ code> lorsque vous appelez
non défini code>? Les résultats suivants dans une erreur d'analyse:
@unset($myvar);
4 Réponses :
L'opérateur Remarque: le @ -Opérator fonctionne uniquement sur
expressions. Une simple règle de pouce
est: si vous pouvez prendre la valeur de
quelque chose, vous pouvez préparer le @
opérateur à celui-ci. Par exemple, vous pouvez
prépendez-le aux variables, fonctionner et
inclure () appels, constantes, etc.
en avant. Vous ne pouvez pas le préparer à
définitions de fonction ou de classe, ou
structures conditionnelles telles que si et
foreach, et ainsi de suite. p>
blockQuote> @ code> ne fonctionne que sur les expressions et
non défini code> est une construction de langue, pas une fonction. Voir le page manuelle pour plus d'informations: p>
Vous pouvez masquer des erreurs en préfixant @ aux fonctions / déclarations. Cependant non défini est une construction de langue, il ne supporte donc pas le @ -rule. P>
La bonne chose est que non défini () ne manque jamais même si la variable n'existait pas pour commencer, cela ne devrait donc pas être nécessaire. P>
comme Nightcracker mentionné cependant, en utilisant @ est une mauvaise pratique. p>
Pas tout à fait correct - nonset ($ indéfini) code> n'échouera pas, mais
nonset ($ indéfini ["foo ']) code> sera.
C'est vrai que, mais si vous n'initialisez pas les tableaux, vous avez d'autres problèmes imo :)
L'opérateur de suppression d'erreur ne fonctionne que sur les expressions: p>
nonset code> est une construction de langue et non une fonction, donc
@ code> ne peut pas être utilisé. P>
Pourquoi ne pouvez-vous pas masquer les erreurs avec l'opérateur @ lorsque vous appelez non défini? P> blockQuote>
Je ne sais pas. Mais vous ne devriez pas utiliser l'opérateur de suppression d'erreur (@) de toute façon. Il y a deux scénarios distincts: P>
développementalt h3>
Vous voulez voir toutes les erreurs juste pour le moment où elles se produisent em>, de préférence avec le message d'erreur brut que PHP vous donne. P>
Production h3>
Vous voulez laisser aucun message d'erreur PHP bulle à l'utilisateur em>. Au lieu de cela, vous souhaitez enregistrer le message d'erreur PHP et afficher votre propre message qu'un profane peut comprendre. P>
Vous ne pouvez pas réaliser cette distinction lorsque vous utilisez @. Vous devez séparer les scénarios thèses en configurant display_errors , error_reporting et définir un gestionnaire d'erreur avec set_error_handler . p>