J’ai vu à l’aide de `` en face de certaines fonctions comme suit :
Quelle est l’utilisation de ce symbole ?
J’ai vu à l’aide de `` en face de certaines fonctions comme suit :
Quelle est l’utilisation de ce symbole ?
Il supprime les messages d’erreur - voir Opérateurs de contrôle d’erreur dans le manuel PHP.
Il supprime les erreurs.
http://UK.php.net/Manual/en/Language.Operators.ErrorControl.php
L' @
symbole est le contrôle d'erreur de l'opérateur (aka le "silence" ou "shut-up" de l'opérateur). Il rend PHP supprimer tous les messages d'erreur (avis, avertissement, fatale, etc) généré par les associés expression. Il fonctionne comme un opérateur unaire, par exemple, il a une priorité et associativité des opérateurs. Ci-dessous, quelques exemples:
@echo 1 / 0;
// generates "Parse error: syntax error, unexpected T_ECHO" since
// echo is not an expression
echo @(1 / 0);
// suppressed "Warning: Division by zero"
@$i / 0;
// suppressed "Notice: Undefined variable: i"
// displayed "Warning: Division by zero"
@($i / 0);
// suppressed "Notice: Undefined variable: i"
// suppressed "Warning: Division by zero"
$c = @$_POST["a"] + @$_POST["b"];
// suppressed "Notice: Undefined index: a"
// suppressed "Notice: Undefined index: b"
$c = @foobar();
echo "Script was not terminated";
// suppressed "Fatal error: Call to undefined function foobar()"
// however, PHP did not "ignore" the error and terminated the
// script because the error was "fatal"
Exactement ce qui se passe si vous utilisez un gestionnaire d'erreur personnalisé au lieu du standard de PHP gestionnaire d'erreur:
Si vous avez défini un gestionnaire d'erreur personnalisé fonction avec set_error_handler() alors il sera encore appelés, mais cette coutume gestionnaire d'erreur peut (et doit) faire appel à la fonction error_reporting (), qui sera retourner la valeur 0 lorsque l'appel qui a déclenché l'erreur a été précédée par un @.
Ceci est illustré dans l'exemple de code suivant:
function bad_error_handler($errno, $errstr, $errfile, $errline, $errcontext) {
echo "[bad_error_handler]: $errstr";
return true;
}
set_error_handler("bad_error_handler");
echo @(1 / 0);
// prints "[bad_error_handler]: Division by zero"
Le gestionnaire d'erreur de ne pas vérifier si @
symbole était en vigueur. Le manuel suggère ce qui suit:
function better_error_handler($errno, $errstr, $errfile, $errline, $errcontext) {
if(error_reporting() !== 0) {
echo "[better_error_handler]: $errstr";
}
// take appropriate action
return true;
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.