Question

Je suis nouveau sur PHP et je suis dérouté de voir quelques exemples appeler une fonction avec un préfixe @ comme @mysql_ping ().

À quoi sert-il? Googler / chercher n’est pas très utile car @ est rejeté et "alias" n’est pas un mot clé suffisant.

Était-ce utile?

La solution

@ supprime les erreurs, les avertissements et les avis.

Vous pouvez l'utiliser à bon escient si vous le complétez avec un gestionnaire d’erreurs ou avec vérification de la variable $ php_errormsg afin que vous puissiez gérer les erreurs correctement.

D'après mon expérience, cet usage approprié n'est pas très répandu mais plutôt mal utilisé, simplement pour masquer les erreurs sans y donner suite.

Plus d'infos sur http://www.php.net/ manual / fr / language.operators.errorcontrol.php

Autres conseils

Il supprime la sortie des messages d'erreur. Contrairement à un autre commentateur, je pense que l’utilisation de cette application est une bonne pratique de programmation (surtout si vous développez une application Web, où la sortie serait mélangée dans le code HTML de la page de sortie).

Des fonctions comme mysql_connect renvoient un identifiant de ressource ou FALSE en cas d'erreur. Utilisez @ mysql_connect (...) et vérifiez la valeur de retour.

googler pour "php au symbole" suggère à PHP de ne pas afficher les messages d'erreur générés par l'appel.

Il supprime les erreurs qui pourraient sinon être générées.

C’est une recette pour la douleur et les épreuves, puisqu’elle entraîne inévitablement des difficultés en cas d’erreur, vous passerez forcément des heures à la recherche de la cause. Si l'opérateur @ n'avait pas été utilisé, l'erreur aurait été détectée en quelques secondes.

Il n'y a aucune raison de l'utiliser, utilisez les paramètres display_errors et error_log ini pour empêcher l'affichage des erreurs sur un site actif et laissez-les apparaître sur votre site dev.

S'il y a une erreur que vous ne voulez pas voir, mieux vaut simplement la corriger que la supprimer!

S'il s'agit de quelque chose dans une bibliothèque externe et en dehors de votre contrôle, il suffit de l'écrire dans les journaux, de désactiver display_errors en production et de vivre avec. Parce que rien ne dit si l’erreur que vous supprimez maintenant et que vous êtes heureux de vivre sera TOUJOURS l’erreur qui est renvoyée à partir de là.

@ === MAUVAIS

Supprimer les messages d'erreur: http://bytes.com/forum/thread10951.html

Le préfixe d'une fonction avec le symbole a cesse de déclencher le gestionnaire d'erreurs PHP en cas d'erreur. N'oubliez pas que vous devez gérer vous-même toutes les erreurs si vous décidez de les utiliser.

$test = @file_get_contents('nonexistant.file');
if(!$test)
{
    die('Failed');
}

Une meilleure pratique consiste à désactiver display_errors et à utiliser des gestionnaires d'erreur personnalisés (voir Exception d'erreur ).

Parfois, cela est utile, surtout si l’administrateur ne veut pas que vous jouiez avec l’environnement php ou si la valeur n’est pas importante et est essentiellement esthétique. Rappelez-vous, cependant; c'est une solution de contournement, pas une panacée.

[...]

.$foutDate = @filemtime($keyring); /* Don't care, as we've already established file */

$f["date"] = $foutDate;

$f["fullDate"] = date("r", $foutDate);

[...]

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top