<?php echo isset($areas['footer']) ? $areas['footer'] : null; ?>
Une façon d'améliorer cela?PHP améliorer une simple déclaration if/else
<?php echo isset($areas['footer']) ? $areas['footer'] : null; ?>
Une façon d'améliorer cela?PHP améliorer une simple déclaration if/else
Notez que vous faites écho et que la valeur null
est sans effet. Vous pourriez dire comme 'empty'
ou ' '
ou 'not found'
à la place. Autre alternative est d'obtenir la valeur de retour de isset
:
$return = isset($areas['footer']) ? $areas['footer'] : null;
if ($return)
{
// $return contains footer info
}
else
{
// footer was not set :(
}
Selon l'endroit où $ les zones provient de cela pourrait être plus propre pour l'assigner à une variable:
$footer = isset($areas['footer']) ? $areas['footer'] : null;
vous pouvez utiliser $ pied sans toute vérification supplémentaire d'isset.
echo $areas['footer'];
Simple et a exactement le même effet que la ligne d'origine.
Modifier en réponse à Felix Cela donne un avis, mais à moins que vous êtes censé tourner cela en tant que devoirs ultra-parfait, il n'a pas vraiment d'importance. Vous pouvez soit remplir votre code avec des appels isset ou ignorer les petites choses comme ça. Je m'inquiéterais si je travaillais sur ... Java, mais pragmatiquement, personne ne s'en souciera si le code PHP qui fonctionne produit des notices.
Mais il vous donnera un avis/avertissement (ne sait pas lequel) si '$ areas' n'a pas d'élément avec la clé' footer'. –
Le préfixe il avec @ pour le faire taire. – Pepijn
@Pepijin: la désactivation d'un avertissement au lieu de corriger la condition qui l'a causé est généralement considérée comme un mauvais style de codage. – Powerlord
Vous pouvez également épargner la branche else, en définissant un défaut:
$footer = null;
if (isset($areas['footer'])) {
$footer = $areas['footer'];
}
echo $footer;
Non, c'est la façon la plus concise de gérer ce genre de sortie.
«J'utilise ce genre de code très souvent »
Peut-être que vous devriez éviter la question tout à fait à l'aide d'un langage de modèle ou d'encapsulation ce comportement dans une fonction?
comme ceci:
function get_area($area) {
if... //your code
return $area
Ironiquement, PHP est un langage de modèle, bien qu'il ne soit souvent pas utilisé de cette façon, car des choses comme des «langages de modèles réels» tels que Smarty existent. – apg
Je savais que quelqu'un allait dire ça. Je n'ai jamais utilisé un langage de template avec PHP, mais je pense que PHP fait un mauvais travail en étant un bon langage de template. – Pepijn
Une version plus courte que je peux penser serait:
<?php !isset($areas['footer']) or print $areas['footer']; ?>
Mais je ne sais pas s'il est plus rapide ou plus élégant. Qu'est-ce que vous en pensez?
okay ... je le pensais mais je voulais être sûr car j'utilise très souvent ce genre de code et je voulais juste voir s'il y avait quelque chose à améliorer. Je vous remercie! – n00b
@ booze2go: Vous êtes les bienvenus :) – Sarfraz