PHP qu'est-ce qui ne va pas avec la syntaxe de ce code?
Question
Je construis quelques règles simples de validation en php et mon IDE (phped) se plaint de la syntaxe.
Quelqu'un peut-il me dire quel est le problème avec ce qui suit?
function notBlank($str) {
(strlen($str) == 0) ? return false : return true;
}
phped se plaint de "retour inattendu"
Tout conseil apprécié.
Merci.
La solution
écrivez-le comme ceci:
function notBlank($str){
return strlen($str) != 0;
}
Autres conseils
Écrivez-le comme ceci:
function notBlank($str) {
return ( strlen($str) == 0 ? false : true );
}
Vous ne pouvez pas utiliser return avec les opérateurs ternaires. Si vous voulez conserver cette syntaxe, vous devez faire quelque chose comme ceci:
function notBlank($str = '') {
$var = (strlen($str) == 0) ? false : true;
return $var;
}
Néanmoins, notez que la manière de faire par défaut est plus lisible:
function notBlank($str = '') {
if(strlen($str) == 0)
return false;
else
return true;
}
J'espère que ça aide!
La réponse de GSto semble être la meilleure, mais vous voudrez peut-être aussi vérifier la fonction vide
de php:
strlen ()
renvoie 0 lorsque la chaîne est vide et en PHP 0 == false
. Donc vraiment, il n’est pas nécessaire d’envelopper strlen ()
dans une fonction. Si vous voulez insister sur une réponse booléenne, lancez-la. c'est-à-dire:
(bool) strlen($string);
Donc, au lieu de votre fonction, qui est supposément appelée dans un bloc if, vous auriez juste
if(strlen($string)) //etc.