web-dev-qa-db-fra.com

Symbole 'At' avant le nom de la variable en PHP: @ $ _ POST

J'ai vu des appels de fonction précédés d'un symbole at pour désactiver les avertissements. Aujourd'hui, je parcourais du code et j'ai trouvé ceci:

$hn = @$_POST['hn'];

À quoi cela servira-t-il ici?

51
Majid Fouladpour

Le @ est l'opérateur de suppression d'erreur en PHP.

PHP prend en charge un opérateur de contrôle d'erreur: le signe at (@). Lorsqu'il est ajouté à une expression en PHP, tous les messages d'erreur qui pourraient être générés par cette expression seront ignorés.

Voir:

Mise à jour:

Dans votre exemple, il est utilisé avant le nom de la variable pour éviter le E_NOTICE erreur là-bas. Si dans le $_POST array, la clé hn n'est pas définie; il lancera un E_NOTICE message, mais @ y est utilisé pour éviter que E_NOTICE.

Notez que vous pouvez également mettre cette ligne au-dessus de votre script pour éviter un E_NOTICE Erreur:

error_reporting(E_ALL ^ E_NOTICE);
68
Sarfraz

Il ne lancera pas d'avertissement si $ _POST ['hn'] n'est pas défini.

11

Tout cela signifie que, si $ _POST ['hn'] n'est pas défini, alors au lieu de lancer une erreur ou un avertissement, PHP affectera simplement NULL à $ hn.

7
SenorPuerco

Il supprime les avertissements si $ _POST ['quelque chose'] n'est pas défini.

3
Hydrino

Quelque chose que d'autres ont oublié de mentionner, c'est qu'en plus d'ignorer l'AVIS, la variable sera définie sur NULL.

1
Yani