2017-07-01 7 views
0

Je me demandais ce que les cas d'utilisation sont d'utiliser le @ symbol in PHP pour supprimer les erreurs pour une expression.Quand utiliser le symbole @ en PHP?

Il est découragé par beaucoup de gens pour de bonnes raisons mais je me demandais quand cela peut effectivement aider à écrire du code plus propre. Je suis tombé sur l'exemple suivant où la validation de l'objet est faite à l'intérieur et à l'extérieur de la fonction. La validation effectuée à l'intérieur de la fonction peut parfois signifier que vous pouvez garder votre code en dehors du nettoyeur de fonction.

validation en dehors de la fonction:

if (isset($object)) { 
    a($object); 
} 

function a($object) { 
} 

validation dans la fonction avec l'utilisation de @:

a(@$object); 

function a($object) { 
    if (!isset($object)) { 
     return false; 
    } 
} 

Existe-t-il de bons cas d'utilisation pour le symbole @?

I know what the @ symbol does, but not when to use it

+2

Presque JAMAIS !!! – RiggsFolly

+0

Utilisez-le avec votre tête mais n'oubliez pas que le débogage sera très difficile. Dans votre exemple, c'est mieux quand vous mettez 'if' dans le corps de la fonction, mais' empty ($ var) 'n'est pas égal à'! Isset ($ var) '. – ventaquil

+2

"Y at-il de bons cas d'utilisation pour le symbole @?" Dans les emails :-) – Andreas

Répondre

2

@ est l'une des choses qui donne la réputation PHP d'une mauvaise langue - il vous permet d'écrire du code mauvais.

Personnellement, j'utilisais @ pour unlink() - c'est le cas que je peux probablement toujours accepter si je fais une révision de code, mais je ne le ferai pas moi-même.

1

Vous pouvez l'utiliser lorsque vous travaillez avec du code (ou une application) qui ne peut pas être modifié par vous (comme une API externe ou des modules encodés) et que votre script peut tomber en panne (par exemple générer une erreur fatale). Mais d'abord, vous DEVEZ gérer de telles situations - générer votre propre exception et créer une capture acceptable (sans crash de script et avertissements PHP sur la page mais avec un message approprié pour l'utilisateur ou l'administrateur). Car sinon, le débogage devient très difficile.