PHP: impression des variables non définies sans avertissement
Question
Je me demande s'il y a un moyen rapide de l'écho des variables non définies sans obtenir un avertissement? (. Je peux modifier le niveau de rapport d'erreur, mais je ne veux pas) Le plus petit que j'ai à ce jour est:
isset($variable)?$variable:''
Je n'aime pas ce pour plusieurs raisons:
- Il est un peu « verbeux » et complexe
-
$variable
est répété - L'écho d'une chaîne vide toujours un peu me agace.
- Mes noms de variables seront probablement plus, par exemple
$arrayvar['parameter']
La solution
vous pouvez utiliser l'exemple ifsetor () provenant :
function ifsetor(&$variable, $default = null) {
if (isset($variable)) {
$tmp = $variable;
} else {
$tmp = $default;
}
return $tmp;
}
par exemple:
echo ifsetor($variable);
echo ifsetor($variable, 'default');
Cela ne génère pas d'avis car la variable est passée par référence.
Autres conseils
echo @$variable;
Ceci est une problème de longue date avec PHP , ils ont l'intention de le fixer avec isset_or()
(ou une fonction similaire) en PHP 6, nous espérons cette fonctionnalité fera dans PHP 5.3 ainsi. Pour l'instant, vous devez utiliser le isset () / exemple ternaire dans votre question, ou bien utiliser le préfixe @ pour faire taire l'erreur. À mon humble avis, c'est la seule circonstance qui justifie l'utilisation @ en PHP.
Je ne vous soucier des problèmes de vitesse à l'aide echo
avec une chaîne vide, il est probablement plus cher de l'envelopper dans une clause de if
que de simplement écho chaîne vide.
variables non définies sont très fréquentes, je vous suggère d'initialiser variable null dans un premier temps
$var = null;
ou désactiver le rapport d'erreur pour avis:
error_reporting(E_ALL^E_NOTICE);
supprimer les erreurs en utilisant l'opérateur @ oblige l'interprète à modifier le niveau d'erreur, l'exécution de la fonction, puis revenir niveau d'erreur. Cela diminue votre temps d'exécution des scripts.
Construire une fonction comme ceci éliminera au moins 3 de vos raisons:
function echoVar($var, $ret=NULL) {
return isset($var)?$var:$ret;
}
echoVar($arrayvar['parameter']);
Mais pourquoi l'écho des variables non définies? Cela ressemble pas vraiment bien codé ...