En utilisant un transitoire WordPress, qui expire après une heure, pour stocker une valeur qui est un entier. J'essaie d'utiliser les instructions switch()
et plusieurs case()
pour évaluer si le transitoire existe ou non (c'est-à-dire vrai ou faux).
Voici mes questions:
=
, ==
, ===
), dans l'exemple 2, est idéal pour ce contexte?Exemple 1:
$transient = get_transient( 'foobar' );
switch( $transient ) :
case( true ) :
// do stuff
break;
case( false ) :
// do stuff
break;
endswitch;
versus
Exemple 2:
$transient = get_transient( foobar );
switch( $transient ) :
case( $transient = true ) :
// do stuff
break;
case( $transient = false ) :
// do stuff
break;
endswitch;
Merci d'avance.
Doit-il utiliser un interrupteur?
pourquoi pas quelque chose comme ça:
if ( false === ( $value = get_transient( 'value' ) ) ) {
// this code runs when there is no valid transient set
} else {
// this code runs when there is a valid transient set
}
Si le transitoire retourne une valeur, il ne retournera pas true. Il retourne la valeur du transitoire. Si le transitoire n'est pas défini, il retourne bool (false)
si vous utilisez un commutateur, ce serait comme ceci:
$ transitoire = get_transient (foobar);
switch( $transient ) :
case false:
// transient not set
break;
default:
// transient didnt return false
break;
endswitch;
Je pense que switch
est un peu trop volumineux pour cela. De plus, votre deuxième exemple n'est certainement pas une façon de le faire.
$transient = get_transient( 'foobar' );
if( false !== $transient ) { // boolean false or has no value
//code goes here
}
else { // any other case
//code goes here
}
===
/!==
comparez par valeur et par type, donc même si votre transitoire sera un entier 0
, il ne sera pas considéré false
.
Vos deux exemples sont incorrects pour la valeur renvoyée par get_transient. get_transient renvoie false lorsque le transitoire n'est pas trouvé, mais si la valeur du transitoire est 0, il sera également évalué à false.
L'instruction PHP switch effectue toujours la comparaison, alors vous risquez de ne pas obtenir les résultats souhaités dans le cas où la valeur transitoire est 0. Il est donc préférable de ne pas utiliser switch dans ce cas, utilisez plutôt if.
Bien que l'exemple 1 fonctionne si vous êtes certain que vos valeurs transitoires ne seront jamais considérées comme fausses.